home *** CD-ROM | disk | FTP | other *** search
- /*
- * ==========================
- * Atari800 - Amiga Port Code
- * ==========================
- */
-
- /*
- * Revision : v0.3.4
- * Introduced : NOT KNOWN (Before 2nd September 1995)
- * Last updated : 1st Oct 1997 (thor)
- *
- *
- *
- * Introduction:
- *
- * This file contains all the additional code required to get the Amiga
- * port of the Atari800 emulator up and running.
- *
- * See "Atari800.guide" for info
- */
-
-
-
- #include <clib/asl_protos.h>
- #include <clib/exec_protos.h>
- #include <devices/gameport.h>
- #include <devices/inputevent.h>
- #include <dos/dos.h>
- #include <dos/dostags.h>
- #include <exec/libraries.h>
- #include <exec/memory.h>
- #include <exec/types.h>
- #include <intuition/intuition.h>
- #include <libraries/asl.h>
- #include <stdio.h>
- #include <string.h>
- #include <workbench/workbench.h>
-
- static char *rcsid = "$Id: atari_amiga.c,v 1.5 1997/04/13 21:21:51 david Exp $";
-
- #include "atari.h"
- #include "colours.h"
-
- #define GAMEPORT0 0
- #define GAMEPORT1 1
-
- #define OCS_ChipSet 0
- #define ECS_ChipSet 1
- #define AGA_ChipSet 2
-
- #ifdef DICE_C
- static struct IntuitionBase *IntuitionBase = NULL;
- static struct GfxBase *GfxBase = NULL;
- static struct LayersBase *LayersBase = NULL;
- static struct Library *AslBase = NULL;
- #endif
-
- #ifdef GNU_C
- struct IntuitionBase *IntuitionBase = NULL;
- struct GfxBase *GfxBase = NULL;
- struct LayersBase *LayersBase = NULL;
- struct Library *AslBase = NULL;
- #endif
-
- extern int countdown_rate;
- extern int refresh_rate;
-
- static struct Window *WindowMain = NULL;
- static struct Window *WindowAbout = NULL;
- static struct Window *WindowNotSupported = NULL;
- static struct Window *WindowSetup = NULL;
- static struct Window *WindowController = NULL;
- static struct Window *WindowYesNo = NULL;
- static struct Window *WindowIconified = NULL;
-
- int old_stick_0 = 0x1f;
- int old_stick_1 = 0x1f;
-
- static int consol;
- static int trig0;
- static int stick0;
-
- struct InputEvent gameport_data;
- struct MsgPort *gameport_msg_port;
- struct IOStdReq *gameport_io_msg;
- BOOL gameport_error;
-
- static UBYTE *image_data;
-
- static BOOL KEYPRESSED,SHIFTPRESSED;
-
- static UWORD ScreenType;
- static struct Screen *ScreenMain = NULL;
- static struct NewScreen NewScreen;
- static struct Image image_Screen;
- static int ScreenID;
- static int ScreenWidth;
- static int ScreenHeight;
- static int ScreenDepth;
- static int TotalColours;
-
- struct AppWindow *AppWindow = NULL;
- struct AppMenuItem *AppMenuItem = NULL;
- struct AppIcon *AppIcon = NULL;
- struct DiskObject *AppDiskObject = NULL;
- struct MsgPort *AppMessagePort = NULL;
- struct AppMessage *AppMessage = NULL;
-
- static struct Menu *menu_Project = NULL;
- static struct MenuItem *menu_Project00 = NULL;
- static struct MenuItem *menu_Project01 = NULL;
- static struct MenuItem *menu_Project02 = NULL;
- static struct MenuItem *menu_Project03 = NULL;
-
- static struct Menu *menu_System = NULL;
- static struct MenuItem *menu_System00 = NULL;
- static struct MenuItem *menu_System01 = NULL;
- static struct MenuItem *menu_System01s00 = NULL;
- static struct MenuItem *menu_System01s01 = NULL;
- static struct MenuItem *menu_System01s02 = NULL;
- static struct MenuItem *menu_System01s03 = NULL;
- static struct MenuItem *menu_System01s04 = NULL;
- static struct MenuItem *menu_System01s05 = NULL;
- static struct MenuItem *menu_System01s06 = NULL;
- static struct MenuItem *menu_System01s07 = NULL;
- static struct MenuItem *menu_System02 = NULL;
- static struct MenuItem *menu_System02s00 = NULL;
- static struct MenuItem *menu_System02s01 = NULL;
- static struct MenuItem *menu_System02s02 = NULL;
- static struct MenuItem *menu_System02s03 = NULL;
- static struct MenuItem *menu_System02s04 = NULL;
- static struct MenuItem *menu_System02s05 = NULL;
- static struct MenuItem *menu_System02s06 = NULL;
- static struct MenuItem *menu_System02s07 = NULL;
- static struct MenuItem *menu_System03 = NULL;
- static struct MenuItem *menu_System03s00 = NULL;
- static struct MenuItem *menu_System03s01 = NULL;
- static struct MenuItem *menu_System03s02 = NULL;
- static struct MenuItem *menu_System04 = NULL;
- static struct MenuItem *menu_System05 = NULL;
- static struct MenuItem *menu_System06 = NULL;
- static struct MenuItem *menu_System07 = NULL;
- static struct MenuItem *menu_System08 = NULL;
- static struct MenuItem *menu_System09 = NULL;
-
- static struct Menu *menu_Console = NULL;
- static struct MenuItem *menu_Console00 = NULL;
- static struct MenuItem *menu_Console01 = NULL;
- static struct MenuItem *menu_Console02 = NULL;
- static struct MenuItem *menu_Console03 = NULL;
- static struct MenuItem *menu_Console04 = NULL;
- static struct MenuItem *menu_Console05 = NULL;
- static struct MenuItem *menu_Console06 = NULL;
-
- static struct Menu *menu_Prefs = NULL;
- static struct MenuItem *menu_Prefs00 = NULL;
- static struct MenuItem *menu_Prefs00s00 = NULL;
- static struct MenuItem *menu_Prefs00s01 = NULL;
- static struct MenuItem *menu_Prefs00s02 = NULL;
- static struct MenuItem *menu_Prefs00s03 = NULL;
- static struct MenuItem *menu_Prefs01 = NULL;
- static struct MenuItem *menu_Prefs01s00 = NULL;
- static struct MenuItem *menu_Prefs01s01 = NULL;
- static struct MenuItem *menu_Prefs02 = NULL;
- static struct MenuItem *menu_Prefs02s00 = NULL;
- static struct MenuItem *menu_Prefs02s01 = NULL;
- static struct MenuItem *menu_Prefs02s02 = NULL;
- static struct MenuItem *menu_Prefs02s03 = NULL;
- static struct MenuItem *menu_Prefs03 = NULL;
- static struct MenuItem *menu_Prefs03s00 = NULL;
- static struct MenuItem *menu_Prefs03s01 = NULL;
- static struct MenuItem *menu_Prefs03s02 = NULL;
- static struct MenuItem *menu_Prefs03s03 = NULL;
-
- struct MemHeader MemHeader;
-
- static UWORD *data_Screen;
-
- static ChipSet;
- static ColourEnabled;
- static Controller;
- static CustomScreen;
-
- static int PaddlePos;
-
- static UpdatePalette;
-
- static void DisplayAboutWindow ();
- static void DisplayNotSupportedWindow ();
- static void DisplaySetupWindow ();
- static void DisplayControllerWindow ();
- static int DisplayYesNoWindow ();
- static int InsertDisk ();
- static struct Gadget *MakeGadget ();
- static struct MenuItem *MakeMenuItem ();
- static struct Menu *MakeMenu ();
- static void Rule ();
- static void ShowText ();
-
- static int gui_GridWidth = 4;
- static int gui_GridHeight = 7;
- static int gui_WindowOffsetLeftEdge = 0; /* 4 */
- static int gui_WindowOffsetTopEdge = 0; /* 11 */
-
- static int LibraryVersion;
-
- #define gadget_Null 0
- #define gadget_Button 1
- #define gadget_Check 2
- #define gadget_String 3
- #define gadget_Mutual 4
-
- #define controller_Null 0
- #define controller_Joystick 1
- #define controller_Paddle 2
-
-
-
- /*
- * ====================
- * Define data_Button64
- * ====================
- */
-
- UWORD data_Button64[]=
- {
- 0x0000, 0x0000, 0x0000, 0x0001,
- 0x0000, 0x0000, 0x0000, 0x0003,
- 0x0000, 0x0000, 0x0000, 0x0003,
- 0x0000, 0x0000, 0x0000, 0x0003,
- 0x0000, 0x0000, 0x0000, 0x0003,
- 0x0000, 0x0000, 0x0000, 0x0003,
- 0x0000, 0x0000, 0x0000, 0x0003,
- 0x0000, 0x0000, 0x0000, 0x0003,
- 0x0000, 0x0000, 0x0000, 0x0003,
- 0x0000, 0x0000, 0x0000, 0x0003,
- 0x0000, 0x0000, 0x0000, 0x0003,
- 0x0000, 0x0000, 0x0000, 0x0003,
- 0x0000, 0x0000, 0x0000, 0x0003,
- 0x7FFF, 0xFFFF, 0xFFFF, 0xFFFF,
-
- 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFE,
- 0xC000, 0x0000, 0x0000, 0x0000,
- 0xC000, 0x0000, 0x0000, 0x0000,
- 0xC000, 0x0000, 0x0000, 0x0000,
- 0xC000, 0x0000, 0x0000, 0x0000,
- 0xC000, 0x0000, 0x0000, 0x0000,
- 0xC000, 0x0000, 0x0000, 0x0000,
- 0xC000, 0x0000, 0x0000, 0x0000,
- 0xC000, 0x0000, 0x0000, 0x0000,
- 0xC000, 0x0000, 0x0000, 0x0000,
- 0xC000, 0x0000, 0x0000, 0x0000,
- 0xC000, 0x0000, 0x0000, 0x0000,
- 0xC000, 0x0000, 0x0000, 0x0000,
- 0x8000, 0x0000, 0x0000, 0x0000
- };
-
-
-
- /*
- * ============================
- * Define data_Button64Selected
- * ============================
- */
-
- UWORD data_Button64Selected[]=
- {
- 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFE,
- 0xC000, 0x0000, 0x0000, 0x0000,
- 0xC000, 0x0000, 0x0000, 0x0000,
- 0xC000, 0x0000, 0x0000, 0x0000,
- 0xC000, 0x0000, 0x0000, 0x0000,
- 0xC000, 0x0000, 0x0000, 0x0000,
- 0xC000, 0x0000, 0x0000, 0x0000,
- 0xC000, 0x0000, 0x0000, 0x0000,
- 0xC000, 0x0000, 0x0000, 0x0000,
- 0xC000, 0x0000, 0x0000, 0x0000,
- 0xC000, 0x0000, 0x0000, 0x0000,
- 0xC000, 0x0000, 0x0000, 0x0000,
- 0xC000, 0x0000, 0x0000, 0x0000,
- 0x8000, 0x0000, 0x0000, 0x0000,
-
- 0x0000, 0x0000, 0x0000, 0x0001,
- 0x0000, 0x0000, 0x0000, 0x0003,
- 0x0000, 0x0000, 0x0000, 0x0003,
- 0x0000, 0x0000, 0x0000, 0x0003,
- 0x0000, 0x0000, 0x0000, 0x0003,
- 0x0000, 0x0000, 0x0000, 0x0003,
- 0x0000, 0x0000, 0x0000, 0x0003,
- 0x0000, 0x0000, 0x0000, 0x0003,
- 0x0000, 0x0000, 0x0000, 0x0003,
- 0x0000, 0x0000, 0x0000, 0x0003,
- 0x0000, 0x0000, 0x0000, 0x0003,
- 0x0000, 0x0000, 0x0000, 0x0003,
- 0x0000, 0x0000, 0x0000, 0x0003,
- 0x7FFF, 0xFFFF, 0xFFFF, 0xFFFF
- };
-
-
-
- /*
- * ========================
- * Define data_MutualGadget
- * ========================
- */
-
- UWORD data_MutualGadget[]=
- {
- 0x0000,
- 0x0000,
- 0x0004,
- 0x0006,
- 0x0006,
- 0x0003,
- 0x0003,
- 0x0003,
- 0x0003,
- 0x0006,
- 0x0006,
- 0x181C,
- 0x1FF8,
- 0x07E0,
-
- 0x07E0,
- 0x1FF8,
- 0x3818,
- 0x6000,
- 0x6000,
- 0xC000,
- 0xC000,
- 0xC000,
- 0xC000,
- 0x6000,
- 0x6000,
- 0x2000,
- 0x0000,
- 0x0000
- };
-
-
-
- /*
- * ================================
- * Define data_MutualGadgetSelected
- * ================================
- */
-
- UWORD data_MutualGadgetSelected[]=
- {
- 0x07E0,
- 0x1FF8,
- 0x3818,
- 0x6180,
- 0x67E0,
- 0xC7E0,
- 0xCFF0,
- 0xCFF0,
- 0xC7E0,
- 0x67E0,
- 0x6180,
- 0x2000,
- 0x0000,
- 0x0000,
-
- 0x0000,
- 0x0000,
- 0x0004,
- 0x0006,
- 0x0006,
- 0x0003,
- 0x0003,
- 0x0003,
- 0x0003,
- 0x0006,
- 0x0006,
- 0x181C,
- 0x1FF8,
- 0x07E0
- };
-
-
-
- struct Image image_Button64;
- struct Image image_Button64Selected;
- struct Image image_MutualGadget;
- struct Image image_MutualGadgetSelected;
-
- UWORD *chip_Button64 = NULL;
- UWORD *chip_Button64Selected = NULL;
- UWORD *chip_MutualGadget = NULL;
- UWORD *chip_MutualGadgetSelected = NULL;
-
- /*
- * ================
- * Atari_Initialize
- * ================
- */
-
- /*
- * Revision : v0.2.1
- * Introduced : NOT KNOWN (Before 2nd September 1995)
- * Last updated : 12th October 1995
- */
-
- void Atari_Initialise (int *argc, char *argv[])
- {
- struct NewWindow NewWindow;
-
- char *ptr;
- int i;
- int j;
- struct IntuiMessage *IntuiMessage;
-
- ULONG Class;
- USHORT Code;
- APTR Address;
-
- int QuitRoutine;
-
- /*
- * =========
- * Zoom Data
- * =========
- */
-
- WORD Zoomdata[4] =
- {
- 0, 11, 200, 15,
- };
-
- /*
- *
- *
- *
- */
-
- chip_Button64 = (UWORD *) AllocMem (sizeof (data_Button64), MEMF_CHIP);
- chip_Button64Selected = (UWORD *) AllocMem (sizeof (data_Button64Selected), MEMF_CHIP);
- chip_MutualGadget = (UWORD *) AllocMem (sizeof (data_MutualGadget), MEMF_CHIP);
- chip_MutualGadgetSelected = (UWORD *) AllocMem (sizeof (data_MutualGadgetSelected), MEMF_CHIP);
-
- memcpy (chip_Button64, data_Button64, sizeof (data_Button64));
- memcpy (chip_Button64Selected, data_Button64Selected, sizeof (data_Button64Selected));
- memcpy (chip_MutualGadget, data_MutualGadget, sizeof (data_MutualGadget));
- memcpy (chip_MutualGadgetSelected, data_MutualGadgetSelected, sizeof (data_MutualGadgetSelected));
-
- /*
- *
- *
- *
- */
-
- image_Button64.LeftEdge = 0;
- image_Button64.TopEdge = 0;
- image_Button64.Width = 64;
- image_Button64.Height = 14;
- image_Button64.Depth = 2;
- image_Button64.ImageData = chip_Button64;
- image_Button64.PlanePick = 3;
- image_Button64.PlaneOnOff = (UBYTE) NULL;
- image_Button64.NextImage = NULL;
-
- image_Button64Selected.LeftEdge = 0;
- image_Button64Selected.TopEdge = 0;
- image_Button64Selected.Width = 64;
- image_Button64Selected.Height = 14;
- image_Button64Selected.Depth = 2;
- image_Button64Selected.ImageData = chip_Button64Selected;
- image_Button64Selected.PlanePick = 3;
- image_Button64Selected.PlaneOnOff = (UBYTE) NULL;
- image_Button64Selected.NextImage = NULL;
-
- image_MutualGadget.LeftEdge = 0;
- image_MutualGadget.TopEdge = 0;
- image_MutualGadget.Width = 16;
- image_MutualGadget.Height = 14;
- image_MutualGadget.Depth = 2;
- image_MutualGadget.ImageData = chip_MutualGadget;
- image_MutualGadget.PlanePick = 3;
- image_MutualGadget.PlaneOnOff = (UBYTE) NULL;
- image_MutualGadget.NextImage = NULL;
-
- image_MutualGadgetSelected.LeftEdge = 0;
- image_MutualGadgetSelected.TopEdge = 0;
- image_MutualGadgetSelected.Width = 16;
- image_MutualGadgetSelected.Height = 14;
- image_MutualGadgetSelected.Depth = 2;
- image_MutualGadgetSelected.ImageData = chip_MutualGadgetSelected;
- image_MutualGadgetSelected.PlanePick = 3;
- image_MutualGadgetSelected.PlaneOnOff = (UBYTE) NULL;
- image_MutualGadgetSelected.NextImage = NULL;
-
- /*
- * =======================
- * Process startup options
- * =======================
- */
-
- ChipSet = AGA_ChipSet;
- ColourEnabled = TRUE;
- UpdatePalette = TRUE;
- CustomScreen = TRUE;
- Controller = controller_Joystick;
- PaddlePos = 228;
- LibraryVersion = 39;
-
- for (i=j=1;i<*argc;i++)
- {
- /*
- printf("%d: %s\n", i,argv[i]);
- */
-
- if (strcmp(argv[i], "-ocs") == 0)
- {
- printf ("Requested OCS graphics mode... Accepted!\n");
- ChipSet = OCS_ChipSet;
- LibraryVersion = 37;
- }
- else if (strcmp(argv[i], "-ecs") == 0)
- {
- printf ("Requested ECS graphics mode... Accepted!\n");
- ChipSet = ECS_ChipSet;
- LibraryVersion = 37;
- }
- else if (strcmp(argv[i], "-aga") == 0)
- {
- printf ("Requested AGA graphics mode... Accepted!\n");
- printf (" Enabled custom screen automatically\n");
- ChipSet = AGA_ChipSet;
- CustomScreen = TRUE;
- LibraryVersion = 39;
- }
- else if (strcmp(argv[i], "-grey") == 0)
- {
- printf ("Requested grey scale display... Accepted!\n");
- ColourEnabled = FALSE;
- }
- else if (strcmp(argv[i], "-colour") == 0)
- {
- printf ("Requested colour display... Accepted!\n");
- ColourEnabled = TRUE;
- }
- else if (strcmp(argv[i], "-wb") == 0)
- {
- printf ("Requested Workbench window... Accepted!\n");
- CustomScreen = FALSE;
- LibraryVersion = 37;
- if (ChipSet == AGA_ChipSet)
- {
- printf (" ECS chip set automatically enabled\n");
- ChipSet = ECS_ChipSet;
- }
- }
- else if (strcmp(argv[i], "-joystick") == 0)
- {
- printf ("Requested joystick controller... Accepted!\n");
- Controller = controller_Joystick;
- }
- else if (strcmp(argv[i], "-paddle") == 0)
- {
- printf ("Requested paddle controller... Accepted!\n");
- Controller = controller_Paddle;
- }
- else
- {
- argv[j++] = argv[i];
- }
- }
-
- *argc = j;
-
- IntuitionBase = (struct IntuitionBase*) OpenLibrary ("intuition.library", LibraryVersion);
- if (!IntuitionBase)
- {
- printf ("Failed to open intuition.library\n");
- Atari_Exit (0);
- }
-
- GfxBase = (struct GfxBase*) OpenLibrary ("graphics.library", LibraryVersion);
- if (!GfxBase)
- {
- printf ("Failed to open graphics.library\n");
- Atari_Exit (0);
- }
-
- LayersBase = (struct LayersBase*) OpenLibrary ("layers.library", LibraryVersion);
- if (!LayersBase)
- {
- printf ("Failed to open layers.library\n");
- Atari_Exit (0);
- }
-
- AslBase = (struct Library*) OpenLibrary ("asl.library", LibraryVersion);
- if (!AslBase)
- {
- printf ("Failed to open asl.library\n");
- Atari_Exit (0);
- }
-
- data_Screen = (UWORD *) AllocMem (46080 * 2, MEMF_CHIP);
- if (!data_Screen)
- {
- printf ("Oh BUGGER!\n");
- }
-
- printf ("data_Screen = %x\n", data_Screen);
-
- /*
- * ==============
- * Setup Joystick
- * ==============
- */
-
- gameport_msg_port = (struct MsgPort *) CreatePort (0, 0);
- if (!gameport_msg_port)
- {
- printf ("Failed to create gameport_msg_port\n");
- Atari_Exit (0);
- }
-
- gameport_io_msg = (struct IOStdReq *) CreateStdIO (gameport_msg_port);
- if (!gameport_io_msg)
- {
- printf ("Failed to create gameport_io_msg\n");
- Atari_Exit (0);
- }
-
- gameport_error = OpenDevice ("gameport.device", GAMEPORT1, gameport_io_msg, 0xFFFF);
- if (gameport_error)
- {
- printf ("Failed to open the gameport.device\n");
- Atari_Exit (0);
- }
-
- {
- BYTE type = 0;
-
- gameport_io_msg->io_Command = GPD_ASKCTYPE;
- gameport_io_msg->io_Length = 1;
- gameport_io_msg->io_Data = (APTR) &type;
-
- DoIO (gameport_io_msg);
-
- if (type)
- {
- printf ("gameport already in use\n");
- gameport_error = TRUE;
- }
- }
-
- {
- BYTE type = GPCT_ABSJOYSTICK;
-
- gameport_io_msg->io_Command = GPD_SETCTYPE;
- gameport_io_msg->io_Length = 1;
- gameport_io_msg->io_Data = (APTR) &type;
-
- DoIO (gameport_io_msg);
-
- if (gameport_io_msg->io_Error)
- {
- printf ("Failed to set controller type\n");
- }
-
- }
-
- {
- struct GamePortTrigger gpt;
-
- gpt.gpt_Keys = GPTF_DOWNKEYS | GPTF_UPKEYS;
- gpt.gpt_Timeout = 0;
- gpt.gpt_XDelta = 1;
- gpt.gpt_YDelta = 1;
-
- gameport_io_msg->io_Command = GPD_SETTRIGGER;
- gameport_io_msg->io_Length = sizeof (gpt);
- gameport_io_msg->io_Data = (APTR) &gpt;
-
- DoIO (gameport_io_msg);
-
- if (gameport_io_msg->io_Error)
- {
- printf ("Failed to set controller trigger\n");
- }
- }
-
- {
- struct InputEvent *Data;
-
- gameport_io_msg->io_Command = GPD_READEVENT;
- gameport_io_msg->io_Length = sizeof (struct InputEvent);
- gameport_io_msg->io_Data = (APTR) &gameport_data;
- gameport_io_msg->io_Flags = 0;
- }
-
- SendIO (gameport_io_msg);
-
- ScreenType = WBENCHSCREEN;
-
- if (ChipSet == AGA_ChipSet)
- {
- DisplaySetupWindow ();
- }
-
- SetupDisplay ();
-
- DisplayAboutWindow ();
-
- /*
- * Setup Project Menu
- */
-
- menu_Project00 = MakeMenuItem (0, 0, 96, 10, "Iconify", NULL, NULL);
- menu_Project01 = MakeMenuItem (0, 15, 96, 10, "Help", 'H', NULL);
- menu_Project02 = MakeMenuItem (0, 30, 96, 10, "About", '?', NULL);
- menu_Project03 = MakeMenuItem (0, 45, 96, 10, "Quit", 'N', NULL);
-
- menu_Project00->NextItem = menu_Project01;
- menu_Project01->NextItem = menu_Project02;
- menu_Project02->NextItem = menu_Project03;
-
- menu_Project = MakeMenu (0, 0, 48, "Amiga", menu_Project00);
-
- /*
- * Setup Disk Menu
- */
-
- menu_System00 = MakeMenuItem (0, 0, 144, 10, "Boot disk", NULL, NULL);
- menu_System01 = MakeMenuItem (0, 10, 144, 10, "Insert disk »", NULL, NULL);
- menu_System01s00 = MakeMenuItem (128, 0, 80, 10, "Drive 1...", NULL, NULL);
- menu_System01s01 = MakeMenuItem (128, 10, 80, 10, "Drive 2...", NULL, NULL);
- menu_System01s02 = MakeMenuItem (128, 20, 80, 10, "Drive 3...", NULL, NULL);
- menu_System01s03 = MakeMenuItem (128, 30, 80, 10, "Drive 4...", NULL, NULL);
- menu_System01s04 = MakeMenuItem (128, 40, 80, 10, "Drive 5...", NULL, NULL);
- menu_System01s05 = MakeMenuItem (128, 50, 80, 10, "Drive 6...", NULL, NULL);
- menu_System01s06 = MakeMenuItem (128, 60, 80, 10, "Drive 7...", NULL, NULL);
- menu_System01s07 = MakeMenuItem (128, 70, 80, 10, "Drive 8...", NULL, NULL);
-
- menu_System01s00->NextItem = menu_System01s01;
- menu_System01s01->NextItem = menu_System01s02;
- menu_System01s02->NextItem = menu_System01s03;
- menu_System01s03->NextItem = menu_System01s04;
- menu_System01s04->NextItem = menu_System01s05;
- menu_System01s05->NextItem = menu_System01s06;
- menu_System01s06->NextItem = menu_System01s07;
-
- menu_System01->SubItem = menu_System01s00;
-
- menu_System02 = MakeMenuItem (0, 20, 144, 10, "Eject disk »", NULL, NULL);
- menu_System02s00 = MakeMenuItem (128, 0, 56, 10, "Drive 1", NULL, NULL);
- menu_System02s01 = MakeMenuItem (128, 10, 56, 10, "Drive 2", NULL, NULL);
- menu_System02s02 = MakeMenuItem (128, 20, 56, 10, "Drive 3", NULL, NULL);
- menu_System02s03 = MakeMenuItem (128, 30, 56, 10, "Drive 4", NULL, NULL);
- menu_System02s04 = MakeMenuItem (128, 40, 56, 10, "Drive 5", NULL, NULL);
- menu_System02s05 = MakeMenuItem (128, 50, 56, 10, "Drive 6", NULL, NULL);
- menu_System02s06 = MakeMenuItem (128, 60, 56, 10, "Drive 7", NULL, NULL);
- menu_System02s07 = MakeMenuItem (128, 70, 56, 10, "Drive 8", NULL, NULL);
-
- menu_System02s00->NextItem = menu_System02s01;
- menu_System02s01->NextItem = menu_System02s02;
- menu_System02s02->NextItem = menu_System02s03;
- menu_System02s03->NextItem = menu_System02s04;
- menu_System02s04->NextItem = menu_System02s05;
- menu_System02s05->NextItem = menu_System02s06;
- menu_System02s06->NextItem = menu_System02s07;
-
- menu_System02->SubItem = menu_System02s00;
-
- menu_System03 = MakeMenuItem (0, 35, 144, 10, "Insert Cartridge »", NULL, NULL);
- menu_System03s00 = MakeMenuItem (128, 0, 128, 10, "8K Cart...", NULL, NULL);
- menu_System03s01 = MakeMenuItem (128, 10, 128, 10, "16K Cart...", NULL, NULL);
- menu_System03s02 = MakeMenuItem (128, 20, 128, 10, "OSS SuperCart...", NULL, NULL);
-
- menu_System03s00->NextItem = menu_System03s01;
- menu_System03s01->NextItem = menu_System03s02;
-
- menu_System03->SubItem = menu_System03s00;
-
- menu_System04 = MakeMenuItem (0, 45, 144, 10, "Remove Cartridge", NULL, NULL);
- menu_System05 = MakeMenuItem (0, 60, 144, 10, "Enable PIL", NULL, NULL);
- menu_System06 = MakeMenuItem (0, 75, 144, 10, "Atari 800 OS/A", NULL, NULL);
- menu_System07 = MakeMenuItem (0, 85, 144, 10, "Atari 800 OS/B", NULL, NULL);
- menu_System08 = MakeMenuItem (0, 95, 144, 10, "Atari 800XL", NULL, NULL);
- menu_System09 = MakeMenuItem (0, 105, 144, 10, "Atari 130XE", NULL, NULL);
-
- menu_System00->NextItem = menu_System01;
- menu_System01->NextItem = menu_System02;
- menu_System02->NextItem = menu_System03;
- menu_System03->NextItem = menu_System04;
- menu_System04->NextItem = menu_System05;
- menu_System05->NextItem = menu_System06;
- menu_System06->NextItem = menu_System07;
- menu_System07->NextItem = menu_System08;
- menu_System08->NextItem = menu_System09;
-
- menu_System = MakeMenu (48, 0, 56, "System", menu_System00);
-
- /*
- * Setup Console Menu
- */
-
- menu_Console00 = MakeMenuItem (0, 0, 80, 10, "Option", NULL, NULL);
- menu_Console01 = MakeMenuItem (0, 10, 80, 10, "Select", NULL, NULL);
- menu_Console02 = MakeMenuItem (0, 20, 80, 10, "Start", NULL, NULL);
- menu_Console03 = MakeMenuItem (0, 30, 80, 10, "Help", NULL, NULL);
-
- if (machine == Atari)
- {
- menu_Console03->Flags = ITEMTEXT | HIGHCOMP;
- }
-
- menu_Console04 = MakeMenuItem (0, 45, 80, 10, "Break", NULL, NULL);
- menu_Console05 = MakeMenuItem (0, 60, 80, 10, "Reset", NULL, NULL);
- menu_Console06 = MakeMenuItem (0, 75, 80, 10, "Cold Start", NULL, NULL);
-
- menu_Console00->NextItem = menu_Console01;
- menu_Console01->NextItem = menu_Console02;
- menu_Console02->NextItem = menu_Console03;
- menu_Console03->NextItem = menu_Console04;
- menu_Console04->NextItem = menu_Console05;
- menu_Console05->NextItem = menu_Console06;
-
- menu_Console = MakeMenu (104, 0, 64, "Console", menu_Console00);
-
- /*
- * Setup Prefs Menu
- */
-
- /*
- menu_Prefs00 = MakeMenuItem (0, 0, 96, 10, "Controller »", NULL, NULL);
- menu_Prefs00s00 = MakeMenuItem (80, 0, 80, 10, " Joystick", NULL, 2);
- menu_Prefs00s01 = MakeMenuItem (80, 10, 80, 10, " Paddle", NULL, 1);
-
- if (Controller == controller_Joystick)
- {
- menu_Prefs00s00->Flags = menu_Prefs00s00->Flags | CHECKED;
- }
- else if (Controller == controller_Paddle)
- {
- menu_Prefs00s01->Flags = menu_Prefs00s01->Flags | CHECKED;
- }
-
- menu_Prefs00s00->NextItem = menu_Prefs00s01;
-
- menu_Prefs00->SubItem = menu_Prefs00s00;
- */
-
- menu_Prefs00 = MakeMenuItem (0, 0, 96, 10, "Controller »", NULL, NULL);
- menu_Prefs00s00 = MakeMenuItem (80, 0, 80, 10, "Port 1...", NULL, NULL);
- menu_Prefs00s01 = MakeMenuItem (80, 10, 80, 10, "Port 2...", NULL, NULL);
- menu_Prefs00s01->Flags = ITEMTEXT | HIGHCOMP;
-
- menu_Prefs00s02 = MakeMenuItem (80, 20, 80, 10, "Port 3...", NULL, NULL);
- /*
- if (machine != Atari)
- {
- menu_Prefs00s02->Flags = ITEMTEXT | HIGHCOMP;
- }
- */
- menu_Prefs00s02->Flags = ITEMTEXT | HIGHCOMP;
-
- menu_Prefs00s03 = MakeMenuItem (80, 30, 80, 10, "Port 4...", NULL, NULL);
- /*
- if (machine != Atari)
- {
- menu_Prefs00s03->Flags = ITEMTEXT | HIGHCOMP;
- }
- */
- menu_Prefs00s03->Flags = ITEMTEXT | HIGHCOMP;
-
- menu_Prefs00s00->NextItem = menu_Prefs00s01;
- menu_Prefs00s01->NextItem = menu_Prefs00s02;
- menu_Prefs00s02->NextItem = menu_Prefs00s03;
-
- menu_Prefs00->SubItem = menu_Prefs00s00;
-
- menu_Prefs01 = MakeMenuItem (0, 10, 96, 10, "Display »", NULL, NULL);
- menu_Prefs01s00 = MakeMenuItem (80, 0, 64, 10, " Colour", NULL, 2);
- menu_Prefs01s01 = MakeMenuItem (80, 10, 64, 10, " Grey", NULL, 1);
-
- if (ColourEnabled)
- {
- menu_Prefs01s00->Flags = menu_Prefs01s00->Flags | CHECKED;
- }
- else
- {
- menu_Prefs01s01->Flags = menu_Prefs01s01->Flags | CHECKED;
- }
-
- menu_Prefs01s00->NextItem = menu_Prefs01s01;
-
- menu_Prefs01->SubItem = menu_Prefs01s00;
-
- menu_Prefs02 = MakeMenuItem (0, 20, 96, 10, "Refresh »", NULL, NULL);
- menu_Prefs02s00 = MakeMenuItem (80, 0, 24, 10, " 1", NULL, 14);
- menu_Prefs02s01 = MakeMenuItem (80, 10, 24, 10, " 2", NULL, 13);
- menu_Prefs02s02 = MakeMenuItem (80, 20, 24, 10, " 4", NULL, 11);
- menu_Prefs02s03 = MakeMenuItem (80, 30, 24, 10, " 8", NULL, 7);
-
- if (refresh_rate == 1)
- {
- menu_Prefs02s00->Flags = menu_Prefs02s00->Flags | CHECKED;
- }
- else if (refresh_rate == 2)
- {
- menu_Prefs02s01->Flags = menu_Prefs02s01->Flags | CHECKED;
- }
- else if (refresh_rate == 4)
- {
- menu_Prefs02s02->Flags = menu_Prefs02s02->Flags | CHECKED;
- }
- else if (refresh_rate == 8)
- {
- menu_Prefs02s03->Flags = menu_Prefs02s03->Flags | CHECKED;
- }
-
- menu_Prefs02s00->NextItem = menu_Prefs02s01;
- menu_Prefs02s01->NextItem = menu_Prefs02s02;
- menu_Prefs02s02->NextItem = menu_Prefs02s03;
-
- menu_Prefs02->SubItem = menu_Prefs02s00;
-
- menu_Prefs03 = MakeMenuItem (0, 30, 96, 10, "Countdown »", NULL, NULL);
- menu_Prefs03s00 = MakeMenuItem (80, 0, 56, 10, " 4000", NULL, 14);
- menu_Prefs03s01 = MakeMenuItem (80, 10, 56, 10, " 8000", NULL, 13);
- menu_Prefs03s02 = MakeMenuItem (80, 20, 56, 10, " 16000", NULL, 11);
- menu_Prefs03s03 = MakeMenuItem (80, 30, 56, 10, " 32000", NULL, 7);
-
- if (countdown_rate == 4000)
- {
- menu_Prefs03s00->Flags = menu_Prefs03s00->Flags | CHECKED;
- }
- else if (countdown_rate == 8000)
- {
- menu_Prefs03s01->Flags = menu_Prefs03s01->Flags | CHECKED;
- }
- else if (countdown_rate == 16000)
- {
- menu_Prefs03s02->Flags = menu_Prefs03s02->Flags | CHECKED;
- }
- else if (countdown_rate == 32000)
- {
- menu_Prefs03s03->Flags = menu_Prefs03s03->Flags | CHECKED;
- }
-
- menu_Prefs03s00->NextItem = menu_Prefs03s01;
- menu_Prefs03s01->NextItem = menu_Prefs03s02;
- menu_Prefs03s02->NextItem = menu_Prefs03s03;
-
- menu_Prefs03->SubItem = menu_Prefs03s00;
-
- menu_Prefs00->NextItem = menu_Prefs01;
- menu_Prefs01->NextItem = menu_Prefs02;
- menu_Prefs02->NextItem = menu_Prefs03;
-
- menu_Prefs = MakeMenu (168, 0, 48, "Prefs", menu_Prefs00);
-
- /*
- * Link Menus
- */
-
- menu_Project->NextMenu = menu_System;
- menu_System->NextMenu = menu_Console;
- menu_Console->NextMenu = menu_Prefs;
-
- SetMenuStrip (WindowMain, menu_Project);
-
- image_Screen.LeftEdge = 0;
- image_Screen.TopEdge = 0;
- image_Screen.Width = 384;
- image_Screen.Height = 240;
- image_Screen.Depth = 8;
- image_Screen.ImageData = data_Screen;
- image_Screen.PlanePick = 255;
- image_Screen.PlaneOnOff = NULL;
- image_Screen.NextImage = NULL;
-
- /*
- * ============================
- * Storage for Atari 800 Screen
- * ============================
- */
-
- image_data = (UBYTE*) malloc (ATARI_MODOLU * ATARI_HEIGHT);
- if (!image_data)
- {
- printf ("Failed to allocate space for image\n");
- Atari_Exit (0);
- }
-
- for (ptr=image_data,i=0;i<ATARI_MODULO*ATARI_HEIGHT;i++,ptr++) *ptr = 0;
- for (ptr=(char *)data_Screen,i=0;i<ATARI_MODULO*ATARI_HEIGHT;i++,ptr++) *ptr = 0;
-
- trig0 = 1;
- stick0 = 15;
- consol = 7;
- }
-
-
-
- /*
- * ==========
- * Atari_Exit
- * ==========
- */
-
- /*
- * Revision : v0.2.0
- * Introduced : NOT KNOWN (Before 2nd September 1995)
- * Last updated : 7th September 1995
- */
-
- int Atari_Exit (int run_monitor)
- {
- if (run_monitor)
- {
- if (monitor ())
- {
- return TRUE;
- }
- }
-
- AbortIO (gameport_io_msg);
-
- while (GetMsg (gameport_msg_port))
- {
- }
-
- if (!gameport_error)
- {
- {
- BYTE type = GPCT_NOCONTROLLER;
-
- gameport_io_msg->io_Command = GPD_SETCTYPE;
- gameport_io_msg->io_Length = 1;
- gameport_io_msg->io_Data = (APTR) &type;
-
- DoIO (gameport_io_msg);
-
- if (gameport_io_msg->io_Error)
- {
- printf ("Failed to set controller type\n");
- }
- }
-
- CloseDevice (gameport_io_msg);
- }
-
- FreeMem (data_Screen, 46080 * 2);
-
- if (gameport_io_msg)
- {
- DeleteStdIO (gameport_io_msg);
- }
-
- if (gameport_msg_port)
- {
- DeletePort (gameport_msg_port);
- }
-
- if (WindowMain)
- {
- CloseWindow (WindowMain);
- }
-
- if (ScreenMain)
- {
- CloseScreen (ScreenMain);
- }
-
- if (LayersBase)
- {
- CloseLibrary (LayersBase);
- }
-
- if (GfxBase)
- {
- CloseLibrary (GfxBase);
- }
-
- if (IntuitionBase)
- {
- CloseLibrary (IntuitionBase);
- }
-
- exit (1);
-
- /*
- return FALSE;
- */
- }
-
-
-
- /*
- * ===================
- * Atari_DisplayScreen
- * ===================
- */
-
- /*
- * Revision : v0.2.0a
- * Introduced : NOT KNOWN (Before 2nd September 1995)
- * Last updated : 7th September 1995
- */
-
- void Atari_DisplayScreen (UBYTE *screen)
- {
- /*
- UWORD *bitplane0;
- UWORD *bitplane1;
- UWORD *bitplane2;
- UWORD *bitplane3;
- UWORD *bitplane4;
-
- bitplane0 = WindowMain->RPort->BitMap->Planes[0];
- word0 = *bitplane0;
-
- bitplane1 = WindowMain->RPort->BitMap->Planes[1];
- word1 = *bitplane1;
-
- bitplane2 = WindowMain->RPort->BitMap->Planes[2];
- word2 = *bitplane2;
-
- bitplane3 = WindowMain->RPort->BitMap->Planes[3];
- word3 = *bitplane3;
-
- bitplane4 = WindowMain->RPort->BitMap->Planes[4];
- word4 = *bitplane4;
- */
-
- consol = 7;
-
- if (ChipSet == AGA_ChipSet)
- {
- ULONG *bitplane0;
-
- bitplane0 = &data_Screen[0];
-
- if (ColourEnabled)
- amiga_aga_colour (screen, bitplane0);
- else
- amiga_aga_bw (screen, bitplane0);
- }
- else
- {
- ULONG *bitplane0;
- ULONG *bitplane1;
- ULONG *bitplane2;
- ULONG *bitplane3;
- ULONG *bitplane4;
-
- ULONG word0, word1, word2, word3, word4;
-
- int ypos;
- int xpos;
- int tbit = 31;
- UBYTE *scanline_ptr;
-
- BYTE pens[256];
- int pen;
-
- scanline_ptr = image_data;
-
- bitplane0 = &data_Screen[0];
- word0 = *bitplane0;
-
- bitplane1 = &data_Screen[5760];
- word1 = *bitplane1;
-
- bitplane2 = &data_Screen[11520];
- word2 = *bitplane2;
-
- bitplane3 = &data_Screen[17280];
- word3 = *bitplane3;
-
- bitplane4 = &data_Screen[23040];
- word4 = *bitplane4;
-
- for (pen=0;pen<256;pen++)
- {
- pens[pen] = 0;
- }
-
- pen = 5;
-
- if (CustomScreen)
- {
- pen = 1;
- }
-
- if (ColourEnabled)
- {
- for (ypos=0;ypos<ATARI_HEIGHT;ypos++)
- {
- for (xpos=0;xpos<ATARI_WIDTH;xpos++)
- {
- UBYTE colour;
-
- colour = *screen;
-
- if (pens[colour] == 0)
- {
- if (pen<33)
- {
- int rgb = colortable[colour];
- int red;
- int green;
- int blue;
-
- pens[colour] = pen;
- pen++;
-
- if (UpdatePalette)
- {
- red = (rgb & 0x00ff0000) >> 20;
- green = (rgb & 0x0000ff00) >> 12;
- blue = (rgb & 0x000000ff) >> 4;
-
- SetRGB4 (&WindowMain->WScreen->ViewPort, pen-1, red, green, blue);
- }
- }
- }
-
- colour = pens[*screen++];
-
- if (colour != *scanline_ptr)
- {
- ULONG mask;
-
- mask = ~(1 << tbit);
-
- word0 = (word0 & mask) | (((colour) & 1) << tbit);
- word1 = (word1 & mask) | (((colour >> 1) & 1) << tbit);
- word2 = (word2 & mask) | (((colour >> 2) & 1) << tbit);
- word3 = (word3 & mask) | (((colour >> 3) & 1) << tbit);
- word4 = (word4 & mask) | (((colour >> 4) & 1) << tbit);
-
- *scanline_ptr++ = colour;
- }
- else
- {
- scanline_ptr++;
- }
-
- if (--tbit == -1)
- {
- *bitplane0++ = word0;
- word0 = *bitplane0;
-
- *bitplane1++ = word1;
- word1 = *bitplane1;
-
- *bitplane2++ = word2;
- word2 = *bitplane2;
-
- *bitplane3++ = word3;
- word3 = *bitplane3;
-
- *bitplane4++ = word4;
- word4 = *bitplane4;
-
- tbit = 31;
- }
- }
- screen += ATARI_EXTRA;
- }
- }
- else
- {
- for (ypos=0;ypos<ATARI_HEIGHT;ypos++)
- {
- for (xpos=0;xpos<ATARI_WIDTH;xpos++)
- {
- UBYTE colour;
-
- colour = (*screen++ & 0x0f) + pen - 1;
-
- if (colour != *scanline_ptr)
- {
- ULONG mask;
-
- mask = ~(1 << tbit);
-
- word0 = (word0 & mask) | (((colour) & 1) << tbit);
- word1 = (word1 & mask) | (((colour >> 1) & 1) << tbit);
- word2 = (word2 & mask) | (((colour >> 2) & 1) << tbit);
- word3 = (word3 & mask) | (((colour >> 3) & 1) << tbit);
- word4 = (word4 & mask) | (((colour >> 4) & 1) << tbit);
-
- *scanline_ptr++ = colour;
- }
- else
- {
- scanline_ptr++;
- }
-
- if (--tbit == -1)
- {
- *bitplane0++ = word0;
- word0 = *bitplane0;
-
- *bitplane1++ = word1;
- word1 = *bitplane1;
-
- *bitplane2++ = word2;
- word2 = *bitplane2;
-
- *bitplane3++ = word3;
- word3 = *bitplane3;
-
- *bitplane4++ = word4;
- word4 = *bitplane4;
-
- tbit = 31;
- }
- }
- screen += ATARI_EXTRA;
- }
- }
- }
-
- if (CustomScreen)
- {
- DrawImage (WindowMain->RPort, &image_Screen, -32, 0);
- }
- else
- {
- DrawImage (WindowMain->RPort, &image_Screen, 0, 0);
- }
- }
-
-
-
- /*
- * ==============
- * Atari_Keyboard
- * ==============
- */
-
- /*
- * Revision : v0.3.3
- * Introduced : NOT KNOWN (Before 2nd September 1995)
- * Last updated : 7th March 1996
- *
- * Notes: Currently contains GUI monitoring code as well. At some time in
- * the future I intend on removing this from this code.
- */
-
- int Atari_Keyboard (void)
- {
- int keycode;
-
- struct IntuiMessage *IntuiMessage;
-
- ULONG Class;
- USHORT Code;
- APTR Address;
- SHORT MouseX;
- SHORT MouseY;
-
- USHORT MenuItem = NULL;
-
- int Menu = NULL;
- int Item = NULL;
- int SubItem = NULL;
-
- keycode = -1;
-
- while (IntuiMessage = (struct IntuiMessage*) GetMsg (WindowMain->UserPort))
- {
- Class = IntuiMessage->Class;
- Code = IntuiMessage->Code;
- Address = IntuiMessage->IAddress;
- MouseX = IntuiMessage->MouseX;
- MouseY = IntuiMessage->MouseY;
-
- MenuItem = Code;
-
- Menu = MENUNUM (MenuItem);
- Item = ITEMNUM (MenuItem);
- SubItem = SUBNUM (MenuItem);
-
- SHIFTPRESSED = (IntuiMessage->Qualifier & 0x03)?(1):(0);
-
- if (Class == MENUVERIFY)
- {
- if (ChipSet == OCS_ChipSet || ChipSet == ECS_ChipSet)
- {
- if (CustomScreen)
- {
- int i;
-
- UpdatePalette = FALSE;
-
- for (i=0;i<16;i++)
- {
- int rgb = colortable[i];
- int red;
- int green;
- int blue;
-
- red = (rgb & 0x00ff0000) >> 20;
- green = (rgb & 0x0000ff00) >> 12;
- blue = (rgb & 0x000000ff) >> 4;
-
- SetRGB4 (&WindowMain->WScreen->ViewPort, i, red, green, blue);
- }
-
- SetRGB4 (&WindowMain->WScreen->ViewPort, 24, 6, 8, 11);
- }
- }
- }
-
- ReplyMsg (IntuiMessage);
-
- switch (Class)
- {
- case VANILLAKEY :
- keycode = Code;
-
- KEYPRESSED = 1;
-
- switch (keycode)
- {
- case 0x01 :
- keycode = AKEY_CTRL_a;
- break;
- case 0x02 :
- keycode = AKEY_CTRL_b;
- break;
- case 0x03 :
- keycode = AKEY_CTRL_c;
- break;
- case 0x04 :
- keycode = AKEY_CTRL_d;
- break;
- case 0x05 :
- keycode = AKEY_CTRL_E;
- break;
- case 0x06 :
- keycode = AKEY_CTRL_F;
- break;
- case 0x07 :
- keycode = AKEY_CTRL_G;
- break;
- /*
- case 0x08 :
- keycode = AKEY_CTRL_H;
- break;
- */
- /* TAB - see case '\t' :
- case 0x09 :
- keycode = AKEY_CTRL_I;
- break;
- */
- case 0x0a :
- keycode = AKEY_CTRL_J;
- break;
- case 0x0b :
- keycode = AKEY_CTRL_K;
- break;
- case 0x0c :
- keycode = AKEY_CTRL_L;
- break;
- /*
- case 0x0d :
- keycode = AKEY_CTRL_M;
- break;
- */
- case 0x0e :
- keycode = AKEY_CTRL_N;
- break;
- case 0x0f :
- keycode = AKEY_CTRL_O;
- break;
- case 0x10 :
- keycode = AKEY_CTRL_P;
- break;
- case 0x11 :
- keycode = AKEY_CTRL_Q;
- break;
- case 0x12 :
- keycode = AKEY_CTRL_R;
- break;
- case 0x13 :
- keycode = AKEY_CTRL_S;
- break;
- case 0x14 :
- keycode = AKEY_CTRL_T;
- break;
- case 0x15 :
- keycode = AKEY_CTRL_U;
- break;
- case 0x16 :
- keycode = AKEY_CTRL_V;
- break;
- case 0x17 :
- keycode = AKEY_CTRL_W;
- break;
- case 0x18 :
- keycode = AKEY_CTRL_X;
- break;
- case 0x19 :
- keycode = AKEY_CTRL_Y;
- break;
- case 0x1a :
- keycode = AKEY_CTRL_Z;
- break;
- case 8 :
- keycode = AKEY_BACKSPACE;
- break;
- case 13 :
- keycode = AKEY_RETURN;
- break;
- case 0x1b :
- keycode = AKEY_ESCAPE;
- break;
- case '0' :
- keycode = AKEY_0;
- break;
- case '1' :
- keycode = AKEY_1;
- break;
- case '2' :
- keycode = AKEY_2;
- break;
- case '3' :
- keycode = AKEY_3;
- break;
- case '4' :
- keycode = AKEY_4;
- break;
- case '5' :
- keycode = AKEY_5;
- break;
- case '6' :
- keycode = AKEY_6;
- break;
- case '7' :
- keycode = AKEY_7;
- break;
- case '8' :
- keycode = AKEY_8;
- break;
- case '9' :
- keycode = AKEY_9;
- break;
- case 'A' : case 'a' :
- keycode = AKEY_a;
- break;
- case 'B' : case 'b' :
- keycode = AKEY_b;
- break;
- case 'C' : case 'c' :
- keycode = AKEY_c;
- break;
- case 'D' : case 'd' :
- keycode = AKEY_d;
- break;
- case 'E' : case 'e' :
- keycode = AKEY_e;
- break;
- case 'F' : case 'f' :
- keycode = AKEY_f;
- break;
- case 'G' : case 'g' :
- keycode = AKEY_g;
- break;
- case 'H' : case 'h' :
- keycode = AKEY_h;
- break;
- case 'I' : case 'i' :
- keycode = AKEY_i;
- break;
- case 'J' : case 'j' :
- keycode = AKEY_j;
- break;
- case 'K' : case 'k' :
- keycode = AKEY_k;
- break;
- case 'L' : case 'l' :
- keycode = AKEY_l;
- break;
- case 'M' : case 'm' :
- keycode = AKEY_m;
- break;
- case 'N' : case 'n' :
- keycode = AKEY_n;
- break;
- case 'O' : case 'o' :
- keycode = AKEY_o;
- break;
- case 'P' : case 'p' :
- keycode = AKEY_p;
- break;
- case 'Q' : case 'q' :
- keycode = AKEY_q;
- break;
- case 'R' : case 'r' :
- keycode = AKEY_r;
- break;
- case 'S' : case 's' :
- keycode = AKEY_s;
- break;
- case 'T' : case 't' :
- keycode = AKEY_t;
- break;
- case 'U' : case 'u' :
- keycode = AKEY_u;
- break;
- case 'V' : case 'v' :
- keycode = AKEY_v;
- break;
- case 'W' : case 'w' :
- keycode = AKEY_w;
- break;
- case 'X' : case 'x' :
- keycode = AKEY_x;
- break;
- case 'Y' : case 'y' :
- keycode = AKEY_y;
- break;
- case 'Z' : case 'z' :
- keycode = AKEY_z;
- break;
- case ' ' :
- keycode = AKEY_SPACE;
- break;
- case '\t' :
- keycode = AKEY_TAB;
- break;
- case '!' :
- keycode = AKEY_EXCLAMATION;
- break;
- case '"' :
- keycode = AKEY_DBLQUOTE;
- break;
- case '#' :
- keycode = AKEY_HASH;
- break;
- case '$' :
- keycode = AKEY_DOLLAR;
- break;
- case '%' :
- keycode = AKEY_PERCENT;
- break;
- case '&' :
- keycode = AKEY_AMPERSAND;
- break;
- case '\'' :
- keycode = AKEY_QUOTE;
- break;
- case '@' :
- keycode = AKEY_AT;
- break;
- case '(' :
- keycode = AKEY_PARENLEFT;
- break;
- case ')' :
- keycode = AKEY_PARENRIGHT;
- break;
- case '<' :
- keycode = AKEY_LESS;
- break;
- case '>' :
- keycode = AKEY_GREATER;
- break;
- case '=' :
- keycode = AKEY_EQUAL;
- break;
- case '?' :
- keycode = AKEY_QUESTION;
- break;
- case '-' :
- keycode = AKEY_MINUS;
- break;
- case '+' :
- keycode = AKEY_PLUS;
- break;
- case '*' :
- keycode = AKEY_ASTERISK;
- break;
- case '/' :
- keycode = AKEY_SLASH;
- break;
- case ':' :
- keycode = AKEY_COLON;
- break;
- case ';' :
- keycode = AKEY_SEMICOLON;
- break;
- case ',' :
- keycode = AKEY_COMMA;
- break;
- case '.' :
- keycode = AKEY_FULLSTOP;
- break;
- case '_' :
- keycode = AKEY_UNDERSCORE;
- break;
- case '[' :
- keycode = AKEY_BRACKETLEFT;
- break;
- case ']' :
- keycode = AKEY_BRACKETRIGHT;
- break;
- case '^' :
- keycode = AKEY_CIRCUMFLEX;
- break;
- case '\\' :
- keycode = AKEY_BACKSLASH;
- break;
- case '|' :
- keycode = AKEY_BAR;
- break;
- default :
- keycode = AKEY_NONE;
- break;
- }
- break;
- case RAWKEY :
- if ((code & 0x7f) < 0x60)
- KEYPRESSED = (keycode & 0x80)?(0):(1);
-
- switch (Code)
- {
- case 0x51 :
- consol &= 0x03;
- keycode = AKEY_NONE;
- break;
- case 0x52 :
- consol &= 0x05;
- keycode = AKEY_NONE;
- break;
- case 0x53 :
- consol &= 0x06;
- keycode = AKEY_NONE;
- break;
- case 0x55 :
- keycode = AKEY_PIL;
- break;
- case 0x56 :
- keycode = AKEY_BREAK;
- break;
- case 0x59 :
- keycode = AKEY_NONE;
- break;
- case 0x4f :
- keycode = AKEY_LEFT;
- break;
- case 0x4c :
- keycode = AKEY_UP;
- break;
- case 0x4e :
- keycode = AKEY_RIGHT;
- break;
- case 0x4d :
- keycode = AKEY_DOWN;
- break;
- default :
- break;
- }
- break;
- case MOUSEBUTTONS :
- if (Controller == controller_Paddle)
- {
- switch (Code)
- {
- case SELECTDOWN :
- stick0 = 251;
- break;
- case SELECTUP :
- stick0 = 255;
- break;
- default :
- break;
- }
- }
- break;
- case MOUSEMOVE :
- if (Controller == controller_Paddle)
- {
- if (MouseX > 57)
- {
- if (MouseX < 287)
- {
- PaddlePos = 228 - (MouseX - 58);
- }
- else
- {
- PaddlePos = 0;
- }
- }
- else
- {
- PaddlePos = 228;
- }
- }
- break;
- case CLOSEWINDOW :
- if (DisplayYesNoWindow ())
- {
- keycode = AKEY_EXIT;
- }
- break;
- case MENUPICK :
- switch (Menu)
- {
- case 0 :
- switch (Item)
- {
- case 0 :
- Iconify ();
- /*
- DisplayNotSupportedWindow ();
- */
- break;
- case 1 :
- SystemTags
- (
- "Run >Nil: <Nil: MultiView Atari800.guide",
- SYS_Input, NULL,
- SYS_Output, NULL,
- TAG_DONE
- );
- break;
- case 2 :
- DisplayAboutWindow ();
- break;
- case 3 :
- if (DisplayYesNoWindow ())
- {
- keycode = AKEY_EXIT;
- }
- break;
- default :
- break;
- }
- break;
- case 1 :
- switch (Item)
- {
- case 0 :
- if (InsertDisk (1))
- {
- keycode = AKEY_COLDSTART;
- }
- break;
- case 1 :
- switch (SubItem)
- {
- case 0 :
- if (InsertDisk (1))
- {
- }
- break;
- case 1 :
- if (InsertDisk (2))
- {
- }
- break;
- case 2 :
- if (InsertDisk (3))
- {
- }
- break;
- case 3 :
- if (InsertDisk (4))
- {
- }
- break;
- case 4 :
- if (InsertDisk (5))
- {
- }
- break;
- case 5 :
- if (InsertDisk (6))
- {
- }
- break;
- case 6 :
- if (InsertDisk (7))
- {
- }
- break;
- case 7 :
- if (InsertDisk (8))
- {
- }
- break;
- default :
- break;
- }
- break;
- case 2 :
- switch (SubItem)
- {
- case 0 :
- SIO_Dismount (1);
- break;
- case 1 :
- SIO_Dismount (2);
- break;
- case 2 :
- SIO_Dismount (3);
- break;
- case 3 :
- SIO_Dismount (4);
- break;
- case 4 :
- SIO_Dismount (5);
- break;
- case 5 :
- SIO_Dismount (6);
- break;
- case 6 :
- SIO_Dismount (7);
- break;
- case 7 :
- SIO_Dismount (8);
- break;
- default :
- break;
- }
- break;
- case 3 :
- switch (SubItem)
- {
- case 0 :
- InsertROM (0);
- break;
- case 1 :
- InsertROM (1);
- break;
- case 2 :
- InsertROM (2);
- break;
- default :
- break;
- }
- break;
- case 4 :
- Remove_ROM ();
- Coldstart ();
- break;
- case 5 :
- EnablePILL ();
- Coldstart ();
- break;
- case 6 :
- /*
- * Atari800 OS/A
- */
-
- {
- int status;
-
- status = Initialise_AtariOSA ();
- if (status)
- {
- if (machine == Atari)
- {
- menu_Console03->Flags = ITEMTEXT | HIGHCOMP;
- }
- else
- {
- menu_Console03->Flags = ITEMTEXT | ITEMENABLED | HIGHCOMP;
- }
- }
- else
- {
- }
- }
- break;
- case 7 :
- /*
- * Atari800 OS/B
- */
-
- {
- int status;
- status = Initialise_AtariOSB ();
- if (status)
- {
- if (machine == Atari)
- {
- menu_Console03->Flags = ITEMTEXT | HIGHCOMP;
- }
- else
- {
- menu_Console03->Flags = ITEMTEXT | ITEMENABLED | HIGHCOMP;
- }
- }
- else
- {
- }
- }
- break;
- case 8 :
- /*
- * Atari800 XL
- */
-
- {
- int status;
-
- status = Initialise_AtariXL ();
- if (status)
- {
- if (machine == Atari)
- {
- menu_Console03->Flags = ITEMTEXT | HIGHCOMP;
- }
- else
- {
- menu_Console03->Flags = ITEMTEXT | ITEMENABLED | HIGHCOMP;
- }
- }
- else
- {
- }
- }
- break;
- case 9 :
- /*
- * Atari XE
- */
-
- {
- int status;
-
- status = Initialise_AtariXE ();
- if (status)
- {
- if (machine == Atari)
- {
- menu_Console03->Flags = ITEMTEXT | HIGHCOMP;
- }
- else
- {
- menu_Console03->Flags = ITEMTEXT | ITEMENABLED | HIGHCOMP;
- }
- }
- else
- {
- }
- }
- break;
- default :
- break;
- }
- break;
- case 2 :
- switch (Item)
- {
- case 0 :
- consol &= 0x03;
- keycode = AKEY_NONE;
- break;
- case 1 :
- consol &= 0x05;
- keycode = AKEY_NONE;
- break;
- case 2 :
- consol &= 0x06;
- keycode = AKEY_NONE;
- break;
- case 3 :
- keycode = AKEY_HELP;
- break;
- case 4 :
- keycode = AKEY_BREAK;
- break;
- case 5 :
- if (DisplayYesNoWindow ())
- {
- keycode = AKEY_WARMSTART;
- }
- break;
- case 6 :
- if (DisplayYesNoWindow ())
- {
- keycode = AKEY_COLDSTART;
- }
- break;
- default :
- break;
- }
- break;
- case 3 :
- switch (Item)
- {
- case 0 :
- switch (SubItem)
- {
- case 0 :
- DisplayControllerWindow (0);
- break;
- case 1 :
- DisplayControllerWindow (1);
- break;
- case 2 :
- DisplayControllerWindow (2);
- break;
- case 3 :
- DisplayControllerWindow (3);
- break;
- default :
- break;
- }
- break;
- case 1 :
- switch (SubItem)
- {
- case 0 :
- ColourEnabled = TRUE;
- break;
- case 1 :
- {
- int i;
-
- ColourEnabled = FALSE;
-
- for (i=0;i<16;i++)
- {
- int rgb = colortable[i];
- int red;
- int green;
- int blue;
-
- red = (rgb & 0x00ff0000) >> 20;
- green = (rgb & 0x0000ff00) >> 12;
- blue = (rgb & 0x000000ff) >> 4;
-
- if (CustomScreen)
- {
- SetRGB4 (&WindowMain->WScreen->ViewPort, i, red, green, blue);
- }
- else
- {
- SetRGB4 (&WindowMain->WScreen->ViewPort, i+4, red, green, blue);
- }
- }
- }
- break;
- default :
- break;
- }
- break;
- case 2 :
- switch (SubItem)
- {
- case 0 :
- refresh_rate = 1;
- break;
- case 1 :
- refresh_rate = 2;
- break;
- case 2 :
- refresh_rate = 4;
- break;
- case 3 :
- refresh_rate = 8;
- break;
- default :
- break;
- }
- break;
- case 3 :
- switch (SubItem)
- {
- case 0 :
- countdown_rate = 4000;
- break;
- case 1 :
- countdown_rate = 8000;
- break;
- case 2 :
- countdown_rate = 16000;
- break;
- case 3 :
- countdown_rate = 32000;
- break;
- default :
- break;
- }
- break;
- default :
- break;
- }
- default :
- break;
- }
-
- UpdatePalette = TRUE;
-
- break;
- default :
- break;
- }
- }
-
- return keycode;
- }
-
-
-
- /*
- * ==============
- * Atari_Joystick
- * ==============
- */
-
- /*
- * Revision : v0.1.9a
- * Introduced : NOT KNOWN (Before 2nd September 1995)
- * Last updated : 2nd September 1995
- */
-
- int Atari_Joystick ()
- {
- WORD x;
- WORD y;
- UWORD code;
-
- int stick = 0;
-
- if (GetMsg (gameport_msg_port))
- {
- x = gameport_data.ie_X;
- y = gameport_data.ie_Y;
- code = gameport_data.ie_Code;
-
- switch (x)
- {
- case -1 :
- switch (y)
- {
- case -1 :
- stick = 10;
- break;
- case 0 :
- stick = 11;
- break;
- case 1 :
- stick = 9;
- break;
- default :
- break;
- }
- break;
- case 0 :
- switch (y)
- {
- case -1 :
- stick = 14;
- break;
- case 0 :
- stick = 15;
- break;
- case 1 :
- stick = 13;
- break;
- default :
- break;
- }
- break;
- case 1 :
- switch (y)
- {
- case -1 :
- stick = 6;
- break;
- case 0 :
- stick = 7;
- break;
- case 1 :
- stick = 5;
- break;
- default :
- break;
- }
- break;
- default :
- break;
- }
-
- if (code == IECODE_LBUTTON)
- {
- if (stick == 0)
- {
- stick = old_stick_0 & 15;
- }
- else
- {
- stick = stick & 15;
- }
- }
-
- if (code == IECODE_LBUTTON + IECODE_UP_PREFIX)
- {
- if (stick == 0)
- {
- stick = old_stick_0 | 16;
- }
- else
- {
- stick = stick | 16;
- }
- }
-
- old_stick_0 = stick;
- SendIO (gameport_io_msg);
- }
-
- if (stick == 0)
- {
- stick = old_stick_0;
- }
-
- stick0 = stick & 0x0f;
- trig0 = (stick & 0x10) >> 4;
-
- /*
- printf ("stick0 = %d trig0 = %d\n", stick0, trig0);
- return stick;
- */
- }
-
-
-
- /*
- * ==========
- * Atari_PORT
- * ==========
- */
-
- /*
- * Revision : v0.2.0a
- * Introduced : 2nd September 1995
- * Last updated : 3rd September 1995
- *
- * Notes: Hook required by v0.2.0. All the work is actually done in
- * Atari_Joystick and Atari_Paddle.
- */
-
- int Atari_PORT (int num)
- {
- if (num == 0)
- {
- if (Controller == controller_Joystick)
- {
- Atari_Joystick ();
- return 0xf0 | stick0;
- }
- else
- {
- return stick0;
- }
- }
- else
- {
- return 0xff;
- }
- }
-
-
-
- /*
- * ==========
- * Atari_TRIG
- * ==========
- */
-
- /*
- * Revision : v0.1.9a
- * Introduced : 2nd September 1995
- * Last updated : 2nd September 1995
- *
- * Notes: Hook required by v0.1.9. All the work is actually done in
- * Atari_Joystick.
- */
-
- int Atari_TRIG (int num)
- {
- if (num == 0)
- {
- Atari_Joystick ();
- return trig0;
- }
- else
- return 1;
- }
-
-
-
- /*
- * =========
- * Atari_POT
- * =========
- */
-
- /*
- * Revision : v0.2.0a
- * Introduced : 2nd September 1995
- * Last updated : 3rd September 1995
- *
- * Notes: Currently acts as nothing more than a hook.
- */
-
- int Atari_POT (int num)
- {
- return PaddlePos;
- }
-
-
-
- /*
- * ============
- * Atari_CONSOL
- * ============
- */
-
- /*
- * Revision : v0.1.9a
- * Introduced : 2nd September 1995
- * Last updated : 2nd September 1995
- *
- * Notes: Hook required by v0.1.9. All the work is actually done in
- * Atari_Keyboard.
- */
-
- int Atari_CONSOL (void)
- {
- return consol;
- }
-
-
-
- /*
- * ==================
- * DisplayAboutWindow
- * ==================
- */
-
- /*
- * Revision : v0.3.3
- * Introduced : 2nd September 1995
- * Last updated : 7th March 1996
- */
-
- void DisplayAboutWindow (void)
-
- {
- ULONG Class;
- USHORT Code;
- APTR Address;
-
- struct IntuiMessage *IntuiMessage;
-
- struct NewWindow NewWindow;
-
- struct Gadget *Gadget1 = NULL;
-
- int QuitRoutine;
-
- NewWindow.LeftEdge = 12;
- NewWindow.TopEdge = 46;
- NewWindow.Width = 296;
- NewWindow.Height = 148;
- NewWindow.DetailPen = 0;
- NewWindow.BlockPen = 15;
- NewWindow.IDCMPFlags = CLOSEWINDOW | GADGETUP;
- NewWindow.Flags = WINDOWCLOSE | GIMMEZEROZERO | WINDOWDRAG | SMART_REFRESH | ACTIVATE;
- NewWindow.FirstGadget = NULL;
- NewWindow.CheckMark = NULL;
- NewWindow.Title = ATARI_TITLE;
- NewWindow.Screen = ScreenMain;
- NewWindow.Type = ScreenType;
- NewWindow.BitMap = NULL;
- NewWindow.MinWidth = 92;
- NewWindow.MinHeight = 65;
- NewWindow.MaxWidth = 1280;
- NewWindow.MaxHeight = 512;
-
- WindowAbout = (struct Window*) OpenWindowTags
- (
- &NewWindow,
- WA_NewLookMenus, TRUE,
- WA_MenuHelp, TRUE,
- WA_ScreenTitle, ATARI_TITLE,
- TAG_DONE
- );
-
- if (ScreenType == CUSTOMSCREEN)
- {
- SetRast (WindowAbout->RPort, 6);
- }
-
- Rule (0, 15, 288, WindowAbout);
-
- {
- char temp[128];
- char *ptr;
-
- strcpy (temp, ATARI_TITLE);
- ptr = strchr(temp,',');
- if (ptr)
- {
- int title_len;
- int version_len;
-
- *ptr++ = '\0';
- ptr++;
-
- title_len = strlen(temp);
- version_len = strlen(ptr);
-
- ShowText ((36 - title_len), 1, WindowAbout, temp);
- ShowText ((36 - version_len), 4, WindowAbout, ptr);
- }
- else
- {
- ShowText (19, 1, WindowAbout, "Atari800 Emulator");
- ShowText (21, 4, WindowAbout, "Version Unknown");
- }
-
- ShowText (17, 7, WindowAbout, "Original program by");
- ShowText (25, 9, WindowAbout, "David Firth");
- ShowText (18, 12, WindowAbout, "Amiga Module V8 by");
- ShowText (20, 14, WindowAbout, "Stephen A. Firth");
- }
-
- Gadget1 = MakeGadget (55, 17, 64, 14, 0, WindowAbout, "Ok", gadget_Button);
-
- QuitRoutine = FALSE;
-
- while (QuitRoutine == FALSE)
- {
- while (IntuiMessage = (struct IntuiMessage*) GetMsg (WindowAbout->UserPort))
- {
- Class = IntuiMessage->Class;
- Code = IntuiMessage->Code;
- Address = IntuiMessage->IAddress;
-
- ReplyMsg (IntuiMessage);
-
- switch (Class)
- {
- case CLOSEWINDOW :
- QuitRoutine = TRUE;
- break;
- case GADGETUP :
- if (Address == (APTR) Gadget1)
- {
- QuitRoutine = TRUE;
- }
- break;
- default :
- break;
- }
- }
- }
-
- CloseWindow (WindowAbout);
- }
-
-
-
- /*
- * ==================
- * DisplaySetupWindow
- * ==================
- */
-
- /*
- * Revision : v0.2.1
- * Introduced : 3rd September 1995
- * Last updated : 12th October 1995
- */
-
- void DisplaySetupWindow (void)
-
- {
- ULONG Class;
- USHORT Code;
- APTR Address;
-
- struct IntuiMessage *IntuiMessage;
-
- struct NewWindow NewWindow;
-
- struct Gadget *Gadget1 = NULL;
- struct Gadget *Gadget2 = NULL;
- struct Gadget *Gadget3 = NULL;
- struct Gadget *Gadget4 = NULL;
- struct Gadget *Gadget5 = NULL;
- struct Gadget *Gadget6 = NULL;
- struct Gadget *Gadget7 = NULL;
-
- int QuitRoutine;
-
- NewWindow.LeftEdge = 0;
- NewWindow.TopEdge = 11;
- NewWindow.Width = 296;
- NewWindow.Height = 148; /* 177 */
- NewWindow.DetailPen = 0;
- NewWindow.BlockPen = 15;
- NewWindow.IDCMPFlags = CLOSEWINDOW | GADGETUP;
- NewWindow.Flags = WINDOWCLOSE | GIMMEZEROZERO | WINDOWDRAG | SMART_REFRESH | ACTIVATE;
- NewWindow.FirstGadget = NULL;
- NewWindow.CheckMark = NULL;
- NewWindow.Title = ATARI_TITLE;
- NewWindow.Screen = NULL;
- NewWindow.Type = WBENCHSCREEN;
- NewWindow.BitMap = NULL;
- NewWindow.MinWidth = 92;
- NewWindow.MinHeight = 65;
- NewWindow.MaxWidth = 1280;
- NewWindow.MaxHeight = 512;
-
- WindowSetup = (struct Window*) OpenWindowTags
- (
- &NewWindow,
- WA_NewLookMenus, TRUE,
- WA_MenuHelp, TRUE,
- WA_ScreenTitle, ATARI_TITLE,
- TAG_DONE
- );
-
- Rule (0, 15, 288, WindowSetup);
-
- ShowText (1, 1, WindowSetup, "Display:");
-
- /*
- ShowText (17, 1, WindowSetup, "CLI Startup Options");
-
- ShowText (2, 4, WindowSetup, "-ocs OCS emulation module");
- ShowText (2, 6, WindowSetup, "-ecs ECS emulation module");
- ShowText (2, 8, WindowSetup, "-aga AGA emulation module");
-
- ShowText (2, 11, WindowSetup, "-wb Open window on Workbench");
- ShowText (2, 13, WindowSetup, " (forces ECS emulation)");
-
- ShowText (2, 16, WindowSetup, "-colour Colour display");
- ShowText (2, 18, WindowSetup, "-grey Grey scale display");
- */
-
- /*
- Gadget1 = MakeGadget (0, 21, 64, 14, 0, WindowSetup, "AGA Screen", gadget_Button);
- Gadget2 = MakeGadget (24, 21, 64, 14, 0, WindowSetup, "ECS Screen", gadget_Button);
- Gadget3 = MakeGadget (48, 21, 64, 14, 0, WindowSetup, "OCS Screen", gadget_Button);
- Gadget4 = MakeGadget (0, 23, 64, 14, 0, WindowSetup, "AGA Window", gadget_Button);
- Gadget5 = MakeGadget (24, 23, 64, 14, 0, WindowSetup, "ECS Window", gadget_Button);
- Gadget6 = MakeGadget (48, 23, 64, 14, 0, WindowSetup, "OCS Window", gadget_Button);
- */
- Gadget1 = MakeGadget (3, 3, 16, 14, 0, WindowSetup, "AGA Screen", gadget_Mutual);
- Gadget1->Flags = GADGIMAGE | GADGHIMAGE | SELECTED;
- Gadget2 = MakeGadget (3, 5, 16, 14, 0, WindowSetup, "ECS Screen", gadget_Mutual);
- Gadget3 = MakeGadget (3, 7, 16, 14, 0, WindowSetup, "OCS Screen", gadget_Mutual);
- Gadget4 = MakeGadget (3, 9, 16, 14, 0, WindowSetup, "AGA Window", gadget_Mutual);
- Gadget5 = MakeGadget (3, 11, 16, 14, 0, WindowSetup, "ECS Window", gadget_Mutual);
- Gadget6 = MakeGadget (3, 13, 16, 14, 0, WindowSetup, "OCS Window", gadget_Mutual);
- Gadget7 = MakeGadget (55, 17, 64, 14, 0, WindowSetup, "Ok", gadget_Button);
-
- RefreshGadgets (Gadget1, WindowSetup, NULL);
-
- QuitRoutine = FALSE;
-
- while (QuitRoutine == FALSE)
- {
- while (IntuiMessage = (struct IntuiMessage*) GetMsg (WindowSetup->UserPort))
- {
- Class = IntuiMessage->Class;
- Code = IntuiMessage->Code;
- Address = IntuiMessage->IAddress;
-
- ReplyMsg (IntuiMessage);
-
- switch (Class)
- {
- case CLOSEWINDOW :
- QuitRoutine = TRUE;
- break;
- case GADGETUP :
- {
- int NewFlagsForGadget1 = GADGIMAGE | GADGHIMAGE;
- int NewFlagsForGadget2 = GADGIMAGE | GADGHIMAGE;
- int NewFlagsForGadget3 = GADGIMAGE | GADGHIMAGE;
- int NewFlagsForGadget4 = GADGIMAGE | GADGHIMAGE;
- int NewFlagsForGadget5 = GADGIMAGE | GADGHIMAGE;
- int NewFlagsForGadget6 = GADGIMAGE | GADGHIMAGE;
- int NewFlags = FALSE;
-
- if (Address == (APTR) Gadget1)
- {
- ChipSet = AGA_ChipSet;
- CustomScreen = TRUE;
- NewFlagsForGadget1 = GADGIMAGE | GADGHIMAGE | SELECTED;
- NewFlags = TRUE;
- }
- else if (Address == (APTR) Gadget2)
- {
- ChipSet = ECS_ChipSet;
- CustomScreen = TRUE;
- NewFlagsForGadget2 = GADGIMAGE | GADGHIMAGE | SELECTED;
- NewFlags = TRUE;
- }
- else if (Address == (APTR) Gadget3)
- {
- ChipSet = OCS_ChipSet;
- CustomScreen = TRUE;
- NewFlagsForGadget3 = GADGIMAGE | GADGHIMAGE | SELECTED;
- NewFlags = TRUE;
- }
- else if (Address == (APTR) Gadget4)
- {
- /*
- * NOTE: AGA Window Modes Currently Not Supported
- */
-
- DisplayNotSupportedWindow ();
-
- Gadget4->Flags = GADGIMAGE | GADGHIMAGE;
- RefreshGadgets (Gadget1, WindowSetup, NULL);
- /*
- QuitRoutine = TRUE;
- ChipSet = ECS_ChipSet;
- CustomScreen = FALSE;
- */
- }
- else if (Address == (APTR) Gadget5)
- {
- ChipSet = ECS_ChipSet;
- CustomScreen = FALSE;
- NewFlagsForGadget5 = GADGIMAGE | GADGHIMAGE | SELECTED;
- NewFlags = TRUE;
- }
- else if (Address == (APTR) Gadget6)
- {
- ChipSet = OCS_ChipSet;
- CustomScreen = FALSE;
- NewFlagsForGadget6 = GADGIMAGE | GADGHIMAGE | SELECTED;
- NewFlags = TRUE;
- }
- else if (Address == (APTR) Gadget7)
- {
- QuitRoutine = TRUE;
- }
-
- if (NewFlags)
- {
- Gadget1->Flags = NewFlagsForGadget1;
- Gadget2->Flags = NewFlagsForGadget2;
- Gadget3->Flags = NewFlagsForGadget3;
- Gadget4->Flags = NewFlagsForGadget4;
- Gadget5->Flags = NewFlagsForGadget5;
- Gadget6->Flags = NewFlagsForGadget6;
- RefreshGadgets (Gadget1, WindowSetup, NULL);
- }
- }
- break;
- default :
- break;
- }
- }
- }
-
- CloseWindow (WindowSetup);
- }
-
-
-
- /*
- * =======================
- * DisplayControllerWindow
- * =======================
- */
-
- /*
- * Revision : v0.2.1a
- * Introduced : 3rd October 1995
- * Last updated : 12th October 1995
- */
-
- void DisplayControllerWindow (int Port)
-
- {
- ULONG Class;
- USHORT Code;
- APTR Address;
-
- struct IntuiMessage *IntuiMessage;
-
- struct NewWindow NewWindow;
-
- struct Gadget *Gadget1 = NULL;
- struct Gadget *Gadget2 = NULL;
- struct Gadget *Gadget3 = NULL;
- struct Gadget *Gadget4 = NULL;
- struct Gadget *Gadget5 = NULL;
- struct Gadget *Gadget6 = NULL;
- struct Gadget *Gadget7 = NULL;
- struct Gadget *Gadget8 = NULL;
- struct Gadget *Gadget9 = NULL;
-
- int QuitRoutine;
- int Accepted;
- int NewController;
-
- NewWindow.LeftEdge = 0;
- NewWindow.TopEdge = 11;
- NewWindow.Width = 296;
- /* Re-insert for v.0.2.2
- NewWindow.Height = 155;
- */
- NewWindow.Height = 92; /* 177 */
- NewWindow.DetailPen = 0;
- NewWindow.BlockPen = 15;
- NewWindow.IDCMPFlags = CLOSEWINDOW | GADGETUP;
- NewWindow.Flags = WINDOWCLOSE | GIMMEZEROZERO | WINDOWDRAG | SMART_REFRESH | ACTIVATE;
- NewWindow.FirstGadget = NULL;
- NewWindow.CheckMark = NULL;
- NewWindow.Title = "Controller Options";
- NewWindow.Screen = ScreenMain;
- NewWindow.Type = ScreenType;
- NewWindow.BitMap = NULL;
- NewWindow.MinWidth = 92;
- NewWindow.MinHeight = 65;
- NewWindow.MaxWidth = 1280;
- NewWindow.MaxHeight = 512;
-
- WindowController = (struct Window*) OpenWindowTags
- (
- &NewWindow,
- WA_NewLookMenus, TRUE,
- WA_MenuHelp, TRUE,
- WA_ScreenTitle, ATARI_TITLE,
- TAG_DONE
- );
-
- if (ScreenType == CUSTOMSCREEN)
- {
- SetRast (WindowController->RPort, 6);
- }
-
- /* Re-insert for v0.2.2
- Rule (0, 16, 288, WindowController);
- */
- Rule (0, 7, 288, WindowController);
-
- ShowText (1, 1, WindowController, "Emulate:");
-
- Gadget1 = MakeGadget (3, 3, 16, 14, 0, WindowController, "Joystick", gadget_Mutual);
-
- if (Controller == controller_Joystick)
- {
- Gadget1->Flags = GADGIMAGE | GADGHIMAGE | SELECTED;
- }
-
- Gadget2 = MakeGadget (3, 5, 16, 14, 0, WindowController, "Paddle", gadget_Mutual);
-
- if (Controller == controller_Paddle)
- {
- Gadget2->Flags = GADGIMAGE | GADGHIMAGE | SELECTED;
- }
-
- /* Re-insert for v0.2.2
- ShowText (36, 1, WindowController, "Via:");
-
- Gadget3 = MakeGadget (38, 3, 16, 14, 0, WindowController, "Joystick", gadget_Mutual);
- Gadget4 = MakeGadget (38, 5, 16, 14, 0, WindowController, "Mouse", gadget_Mutual);
-
- ShowText (1, 8, WindowController, "Amiga port:");
-
- Gadget5 = MakeGadget (3, 10, 16, 14, 0, WindowController, "0", gadget_Mutual);
- Gadget6 = MakeGadget (3, 12, 16, 14, 0, WindowController, "1", gadget_Mutual);
- Gadget7 = MakeGadget (3, 14, 16, 14, 0, WindowController, "None", gadget_Mutual);
-
- Gadget8 = MakeGadget (39, 18, 64, 14, 0, WindowController, "Ok", gadget_Button);
- Gadget9 = MakeGadget (55, 18, 64, 14, 0, WindowController, "Cancel", gadget_Button);
- */
-
- Gadget8 = MakeGadget (39, 9, 64, 14, 0, WindowController, "Ok", gadget_Button);
- Gadget9 = MakeGadget (55, 9, 64, 14, 0, WindowController, "Cancel", gadget_Button);
-
- RefreshGadgets (Gadget1, WindowController, NULL);
-
- QuitRoutine = FALSE;
- Accepted = FALSE;
-
- NewController = Controller;
-
- while (QuitRoutine == FALSE)
- {
- while (IntuiMessage = (struct IntuiMessage*) GetMsg (WindowController->UserPort))
- {
- Class = IntuiMessage->Class;
- Code = IntuiMessage->Code;
- Address = IntuiMessage->IAddress;
-
- ReplyMsg (IntuiMessage);
-
- switch (Class)
- {
- case CLOSEWINDOW :
- QuitRoutine = TRUE;
- break;
- case GADGETUP :
- if (Address == (APTR) Gadget1)
- {
- Gadget1->Flags = GADGIMAGE | GADGHIMAGE | SELECTED;
- Gadget2->Flags = GADGIMAGE | GADGHIMAGE;
- RefreshGadgets (Gadget1, WindowController, NULL);
- NewController = controller_Joystick;
- }
- else if (Address == (APTR) Gadget2)
- {
- Gadget1->Flags = GADGIMAGE | GADGHIMAGE;
- Gadget2->Flags = GADGIMAGE | GADGHIMAGE | SELECTED;
- RefreshGadgets (Gadget1, WindowController, NULL);
- NewController = controller_Paddle;
- }
- /* Re-insert for v0.2.2
- else if (Address == (APTR) Gadget3)
- {
- }
- else if (Address == (APTR) Gadget4)
- {
- }
- else if (Address == (APTR) Gadget5)
- {
- }
- else if (Address == (APTR) Gadget6)
- {
- }
- else if (Address == (APTR) Gadget7)
- {
- }
- */
- else if (Address == (APTR) Gadget8)
- {
- QuitRoutine = TRUE;
- Accepted = TRUE;
- }
- else if (Address == (APTR) Gadget9)
- {
- QuitRoutine = TRUE;
- }
- break;
- default :
- break;
- }
- }
- }
-
- if (Accepted)
- {
- Controller = NewController;
- }
-
- CloseWindow (WindowController);
- }
-
-
-
- /*
- * =========================
- * DisplayNotSupportedWindow
- * =========================
- */
-
- /*
- * Revision : v0.2.0
- * Introduced : 3rd September 1995
- * Last updated : 9th September 1995
- */
-
- void DisplayNotSupportedWindow (void)
-
- {
- ULONG Class;
- USHORT Code;
- APTR Address;
-
- struct IntuiMessage *IntuiMessage;
-
- struct NewWindow NewWindow;
-
- struct Gadget *Gadget1 = NULL;
-
- int QuitRoutine;
-
- NewWindow.LeftEdge = 12;
- NewWindow.TopEdge = 91;
- NewWindow.Width = 296;
- NewWindow.Height = 57;
- NewWindow.DetailPen = 0;
- NewWindow.BlockPen = 15;
- NewWindow.IDCMPFlags = CLOSEWINDOW | GADGETUP;
- NewWindow.Flags = WINDOWCLOSE | GIMMEZEROZERO | WINDOWDRAG | SMART_REFRESH | ACTIVATE;
- NewWindow.FirstGadget = NULL;
- NewWindow.CheckMark = NULL;
- NewWindow.Title = "Warning!";
- NewWindow.Screen = ScreenMain;
- NewWindow.Type = ScreenType;
- NewWindow.BitMap = NULL;
- NewWindow.MinWidth = 92;
- NewWindow.MinHeight = 65;
- NewWindow.MaxWidth = 1280;
- NewWindow.MaxHeight = 512;
-
- WindowNotSupported = (struct Window*) OpenWindowTags
- (
- &NewWindow,
- WA_NewLookMenus, TRUE,
- WA_MenuHelp, TRUE,
- WA_ScreenTitle, ATARI_TITLE,
- TAG_DONE
- );
-
- if (ScreenType == CUSTOMSCREEN)
- {
- SetRast (WindowNotSupported->RPort, 6);
- }
-
- Rule (0, 2, 288, WindowNotSupported);
-
- ShowText (15, 1, WindowNotSupported, "Feature not supported");
-
- Gadget1 = MakeGadget (55, 4, 64, 14, 0, WindowNotSupported, "Ok", gadget_Button);
-
- QuitRoutine = FALSE;
-
- while (QuitRoutine == FALSE)
- {
- while (IntuiMessage = (struct IntuiMessage*) GetMsg (WindowNotSupported->UserPort))
- {
- Class = IntuiMessage->Class;
- Code = IntuiMessage->Code;
- Address = IntuiMessage->IAddress;
-
- ReplyMsg (IntuiMessage);
-
- switch (Class)
- {
- case CLOSEWINDOW :
- QuitRoutine = TRUE;
- break;
- case GADGETUP :
- if (Address == (APTR) Gadget1)
- {
- QuitRoutine = TRUE;
- }
- break;
- default :
- break;
- }
- }
- }
-
- CloseWindow (WindowNotSupported);
- }
-
-
-
- /*
- * ==================
- * DisplayYesNoWindow
- * ==================
- */
-
- /*
- * Revision : v0.2.0a
- * Introduced : 9th September 1995
- * Last updated : 9th September 1995
- */
-
- int DisplayYesNoWindow (void)
-
- {
- ULONG Class;
- USHORT Code;
- APTR Address;
-
- struct IntuiMessage *IntuiMessage;
-
- struct NewWindow NewWindow;
-
- struct Gadget *Gadget1 = NULL;
- struct Gadget *Gadget2 = NULL;
-
- int QuitRoutine;
- int Answer;
-
- Answer = FALSE;
-
- NewWindow.LeftEdge = 12;
- NewWindow.TopEdge = 91;
- NewWindow.Width = 296;
- NewWindow.Height = 57;
- NewWindow.DetailPen = 0;
- NewWindow.BlockPen = 15;
- NewWindow.IDCMPFlags = CLOSEWINDOW | GADGETUP;
- NewWindow.Flags = WINDOWCLOSE | GIMMEZEROZERO | WINDOWDRAG | SMART_REFRESH | ACTIVATE;
- NewWindow.FirstGadget = NULL;
- NewWindow.CheckMark = NULL;
- NewWindow.Title = "Warning!";
- NewWindow.Screen = ScreenMain;
- NewWindow.Type = ScreenType;
- NewWindow.BitMap = NULL;
- NewWindow.MinWidth = 92;
- NewWindow.MinHeight = 65;
- NewWindow.MaxWidth = 1280;
- NewWindow.MaxHeight = 512;
-
- WindowYesNo = (struct Window*) OpenWindowTags
- (
- &NewWindow,
- WA_NewLookMenus, TRUE,
- WA_MenuHelp, TRUE,
- WA_ScreenTitle, ATARI_TITLE,
- TAG_DONE
- );
-
- if (ScreenType == CUSTOMSCREEN)
- {
- SetRast (WindowYesNo->RPort, 6);
- }
-
- Rule (0, 2, 288, WindowYesNo);
-
- ShowText (1, 1, WindowYesNo, "Are you sure?");
-
- Gadget1 = MakeGadget (39, 4, 64, 14, 0, WindowYesNo, "Ok", gadget_Button);
- Gadget2 = MakeGadget (55, 4, 64, 14, 0, WindowYesNo, "Cancel", gadget_Button);
-
- QuitRoutine = FALSE;
-
- while (QuitRoutine == FALSE)
- {
- while (IntuiMessage = (struct IntuiMessage*) GetMsg (WindowYesNo->UserPort))
- {
- Class = IntuiMessage->Class;
- Code = IntuiMessage->Code;
- Address = IntuiMessage->IAddress;
-
- ReplyMsg (IntuiMessage);
-
- switch (Class)
- {
- case CLOSEWINDOW :
- QuitRoutine = TRUE;
- break;
- case GADGETUP :
- if (Address == (APTR) Gadget1)
- {
- QuitRoutine = TRUE;
- Answer = TRUE;
- }
- else if (Address == (APTR) Gadget2)
- {
- QuitRoutine = TRUE;
- }
- break;
- default :
- break;
- }
- }
- }
-
- CloseWindow (WindowYesNo);
-
- return Answer;
- }
-
-
-
- /*
- * ============
- * MakeMenuItem
- * ============
- */
-
- /*
- * Revision : v0.2.0
- * Introduced : NOT KNOWN (Before 2nd September 1995)
- * Last updated : 9th September 1995
- *
- * Notes: A simple routine to help GUI development.
- */
-
- struct MenuItem *MakeMenuItem (int LeftEdge, int TopEdge, int Width,
- int Height, char *Title, int Key, int Exclude)
-
- {
- struct IntuiText *IntuiText;
- struct MenuItem *MenuItem;
-
- IntuiText = (struct IntuiText*)malloc(sizeof(struct IntuiText));
- if (!IntuiText)
- {
- }
-
- IntuiText->FrontPen = 1;
- IntuiText->BackPen = 2;
- IntuiText->DrawMode = JAM1;
- IntuiText->LeftEdge = NULL;
- IntuiText->TopEdge = 1;
- IntuiText->ITextFont = NULL;
- IntuiText->IText = (UBYTE*)Title;
- IntuiText->NextText = NULL;
-
- MenuItem = (struct MenuItem*)malloc(sizeof(struct MenuItem));
- if (!MenuItem)
- {
- }
-
- MenuItem->NextItem = NULL;
- MenuItem->LeftEdge = LeftEdge;
- MenuItem->TopEdge = TopEdge;
- MenuItem->Width = Width;
- MenuItem->Height = Height;
-
- MenuItem->Flags = ITEMTEXT | ITEMENABLED | HIGHCOMP;
-
- if (Key)
- {
- MenuItem->Flags = MenuItem->Flags | COMMSEQ;
- }
-
- if (Exclude)
- {
- MenuItem->Flags = MenuItem->Flags | CHECKIT;
- }
-
- /*
- if (Key==NULL)
- {
- MenuItem->Flags = ITEMTEXT | ITEMENABLED | HIGHCOMP;
- }
- else
- {
- MenuItem->Flags = ITEMTEXT | ITEMENABLED | HIGHCOMP | COMMSEQ;
- }
- */
-
- MenuItem->MutualExclude = Exclude;
- MenuItem->ItemFill = (APTR)IntuiText;
- MenuItem->SelectFill = NULL;
- MenuItem->Command = (BYTE)Key;
- MenuItem->SubItem = NULL;
- MenuItem->NextSelect = MENUNULL;
-
- return MenuItem;
- }
-
-
-
- /*
- * ========
- * MakeMenu
- * ========
- */
-
- /*
- * Revision : v0.1.8
- * Introduced : NOT KNOWN (Before 2nd September 1995)
- * Last updated : NOT KNOWN (Before 2nd September 1995)
- *
- * Notes: A simple routine to help GUI development.
- */
-
- struct Menu *MakeMenu (int LeftEdge, int TopEdge, int Width, char *Title, struct MenuItem *MenuItem)
-
- {
- struct Menu *Menu;
-
- Menu = (struct Menu*)malloc(sizeof(struct Menu));
- if (!Menu)
- {
- }
-
- Menu->NextMenu = NULL;
- Menu->LeftEdge = LeftEdge;
- Menu->TopEdge = TopEdge;
- Menu->Width = Width;
- Menu->Height = 0;
- Menu->Flags = MENUENABLED;
- Menu->MenuName = Title;
- Menu->FirstItem = MenuItem;
-
- return Menu;
- }
-
-
-
- /*
- * ==========
- * MakeGadget
- * ==========
- */
-
- /*
- * Revision : v0.2.1a
- * Introduced : 2nd September 1995
- * Last updated : 9th October 1995
- *
- * Notes: Not complete yet. The Type argument is currently not supported so
- * routine is only capable of producing boring click-me-to-continue type
- * gadgets.
- */
-
- struct Gadget *MakeGadget (int LeftEdge, int TopEdge, int Width, int Height, int Offset, struct Window *Window, char *Title, int Type)
-
- {
- int Result;
- int TextX;
-
- struct IntuiText *NewTextAddress = NULL;
- struct Gadget *NewGadgetAddress = NULL;
-
- NewGadgetAddress = (struct Gadget*)malloc(sizeof(struct Gadget));
- if (!NewGadgetAddress)
- {
- }
-
- NewGadgetAddress->NextGadget = NULL;
- /*
- NewGadgetAddress->LeftEdge = LeftEdge;
- NewGadgetAddress->TopEdge = TopEdge;
- */
- NewGadgetAddress->Width = Width;
- NewGadgetAddress->Height = Height;
-
- NewGadgetAddress->Flags = GADGIMAGE | GADGHIMAGE;
- NewGadgetAddress->Activation = RELVERIFY;
- NewGadgetAddress->GadgetType = BOOLGADGET;
- if (Type == gadget_Button)
- {
- NewGadgetAddress->GadgetRender = &image_Button64;
- NewGadgetAddress->SelectRender = &image_Button64Selected;
- }
- else if (Type == gadget_Mutual)
- {
- NewGadgetAddress->Activation = TOGGLESELECT | RELVERIFY;
- NewGadgetAddress->GadgetRender = &image_MutualGadget;
- NewGadgetAddress->SelectRender = &image_MutualGadgetSelected;
- }
- else
- {
- NewGadgetAddress->Flags = GADGHCOMP;
- }
-
- NewGadgetAddress->GadgetText = NULL;
- NewGadgetAddress->MutualExclude = NULL;
- NewGadgetAddress->SpecialInfo = NULL;
- NewGadgetAddress->GadgetID = 0;
- NewGadgetAddress->UserData = NULL;
-
- LeftEdge = (LeftEdge * gui_GridWidth) + gui_WindowOffsetLeftEdge;
- TopEdge = (TopEdge * gui_GridHeight) + gui_WindowOffsetTopEdge + 1 + ((gui_GridHeight - 7) * 2);
-
- NewGadgetAddress->LeftEdge = LeftEdge;
- NewGadgetAddress->TopEdge = TopEdge;
- NewGadgetAddress->Width = Width;
- NewGadgetAddress->Height = Height;
-
- if (Type == gadget_Button)
- {
- TextX=(Width/2)-(strlen(Title)*4);
- }
- else if (Type == gadget_Mutual)
- {
- TextX = 24;
- }
-
- NewTextAddress = (struct IntuiText*)malloc(sizeof(struct IntuiText));
- if (!NewTextAddress)
- {
- }
-
- NewTextAddress->FrontPen = 1;
- NewTextAddress->BackPen = 3;
- NewTextAddress->DrawMode = JAM1;
- NewTextAddress->LeftEdge = TextX;
- NewTextAddress->TopEdge = 3;
- NewTextAddress->ITextFont = NULL;
- NewTextAddress->IText = (UBYTE*)Title;
- NewTextAddress->NextText = NULL;
-
- NewGadgetAddress->GadgetText = NewTextAddress;
-
- if (NewGadgetAddress->Activation & TOGGLESELECT)
- {
- if (Title)
- {
- if (Offset)
- {
- NewTextAddress->LeftEdge = Offset;
- }
- }
- }
-
- if (Window)
- {
- Result = AddGadget (Window, NewGadgetAddress, -1);
- RefreshGadgets (NewGadgetAddress, Window, NULL);
- }
-
- return NewGadgetAddress;
- }
-
-
-
- /*
- * ========
- * ShowText
- * ========
- */
-
- /*
- * Revision : v0.2.0
- * Introduced : 2nd September 1995
- * Last updated : 9th September 1995
- *
- * Notes: A simple routine to help any future GUI development.
- */
-
- void ShowText (int LeftEdge, int TopEdge, struct Window *Window, char *TextString)
-
- {
- if (ScreenType == CUSTOMSCREEN)
- {
- SetAPen (Window->RPort, 0);
- SetBPen (Window->RPort, 6);
- }
- else
- {
- SetAPen (Window->RPort, 1);
- SetBPen (Window->RPort, 0);
- }
-
- LeftEdge = (LeftEdge * gui_GridWidth);
- TopEdge = (TopEdge * gui_GridHeight) + ((gui_GridHeight - 7) * 2);
-
- if (Window->Flags & GIMMEZEROZERO)
- {
- TopEdge = TopEdge + 8;
- }
- else
- {
- LeftEdge = LeftEdge + gui_WindowOffsetLeftEdge;
- TopEdge = TopEdge + gui_WindowOffsetTopEdge + 8;
- }
-
- Move (Window->RPort, LeftEdge, TopEdge);
- Text (Window->RPort, TextString, strlen(TextString));
- }
-
-
-
- /*
- * ====
- * Rule
- * ====
- */
-
- /*
- * Revision : v0.2.0
- * Introduced : 2nd September 1995
- * Last updated : 9th September 1995
- *
- * Notes: A simple routine to help any future GUI development.
- */
-
- void Rule (int LeftEdge, int TopEdge, int Width, struct Window *Window)
-
- {
- int RightEdge;
-
- LeftEdge = (LeftEdge * gui_GridWidth) + gui_WindowOffsetLeftEdge;
- TopEdge = (TopEdge * gui_GridHeight) + 12 + gui_WindowOffsetTopEdge; /* + 44 */
-
- RightEdge = Width + LeftEdge - 1;
-
- if (ScreenType == CUSTOMSCREEN)
- {
- SetAPen (Window->RPort, 0);
- }
- else
- {
- SetAPen (Window->RPort, 1);
- }
-
- Move (Window->RPort, LeftEdge, TopEdge);
- Draw (Window->RPort, RightEdge, TopEdge);
-
- if (ScreenType == CUSTOMSCREEN)
- {
- SetAPen (Window->RPort, 15);
- }
- else
- {
- SetAPen (Window->RPort, 2);
- }
-
- Move (Window->RPort, LeftEdge, TopEdge + 1);
- Draw (Window->RPort, RightEdge, TopEdge + 1);
- }
-
-
-
- /*
- * ==========
- * InsertDisk
- * ==========
- */
-
- /*
- * Revision : v0.2.1
- * Introduced : 24th September 1995
- * Last updated : 24th September 1995
- *
- * Notes: A simple routine to help any future GUI development.
- */
-
- int InsertDisk (int Drive)
-
- {
- struct FileRequester *FileRequester = NULL;
- char Filename[256];
- int Success = FALSE;
-
- if (FileRequester = (struct FileRequester*) AllocAslRequestTags (ASL_FileRequest, TAG_DONE))
- {
- if (AslRequestTags (FileRequester,
- ASLFR_Screen, ScreenMain,
- ASLFR_TitleText, "Select file",
- ASLFR_PositiveText, "Ok",
- ASLFR_NegativeText, "Cancel",
- TAG_DONE))
- {
- printf ("File selected: %s/%s\n", FileRequester->rf_Dir, FileRequester->rf_File);
- printf ("Number of files : %d\n", FileRequester->fr_NumArgs);
-
- SIO_Dismount (Drive);
-
- if (FileRequester->rf_Dir)
- {
- sprintf (Filename, "%s/%s", FileRequester->rf_Dir, FileRequester->rf_File);
- }
- else
- {
- sprintf (Filename, "%s", FileRequester->rf_File);
- }
-
- if (!SIO_Mount (Drive, Filename))
- {
- }
- else
- {
- Success = TRUE;
- }
- }
- else
- {
- /*
- * Cancelled
- */
- }
- }
- else
- {
- printf ("Unable to create requester\n");
- }
-
- return Success;
- }
-
-
-
- /*
- * =========
- * InsertROM
- * =========
- */
-
- /*
- * Revision : v0.3.3
- * Introduced : 10th March 1996
- * Last updated : 10th March 1996
- */
-
- int InsertROM (int CartType)
-
- {
- struct FileRequester *FileRequester = NULL;
- char Filename[256];
- int Success = FALSE;
-
- if (FileRequester = (struct FileRequester*) AllocAslRequestTags (ASL_FileRequest, TAG_DONE))
- {
- if (AslRequestTags (FileRequester,
- ASLFR_Screen, ScreenMain,
- ASLFR_TitleText, "Select file",
- ASLFR_PositiveText, "Ok",
- ASLFR_NegativeText, "Cancel",
- TAG_DONE))
- {
- printf ("File selected: %s/%s\n", FileRequester->rf_Dir, FileRequester->rf_File);
- printf ("Number of files : %d\n", FileRequester->fr_NumArgs);
-
- if (FileRequester->rf_Dir)
- {
- sprintf (Filename, "%s/%s", FileRequester->rf_Dir, FileRequester->rf_File);
- }
- else
- {
- sprintf (Filename, "%s", FileRequester->rf_File);
- }
-
- if (CartType == 0)
- {
- Remove_ROM ();
- if (Insert_8K_ROM(Filename))
- {
- Coldstart ();
- }
- }
- else if (CartType == 1)
- {
- Remove_ROM ();
- if (Insert_16K_ROM(Filename))
- {
- Coldstart ();
- }
- }
- else if (CartType == 2)
- {
- Remove_ROM ();
- if (Insert_OSS_ROM(Filename))
- {
- Coldstart ();
- }
- }
- }
- else
- {
- /*
- * Cancelled
- */
- }
- }
- else
- {
- printf ("Unable to create requester\n");
- }
-
- return Success;
- }
-
-
-
- insert_rom_callback ()
- {
- /*
- xv_set (chooser,
- FRAME_LABEL, "ROM Selector",
- FILE_CHOOSER_DIRECTORY, ATARI_ROM_DIR,
- FILE_CHOOSER_NOTIFY_FUNC, rom_change,
- XV_SHOW, TRUE,
- NULL);
- */
- }
-
-
-
- /*
- * ============
- * SetupDisplay
- * ============
- */
-
- /*
- * Revision : v0.3.3
- * Introduced : 10th March 1996
- * Last updated : 10th March 1996
- */
-
- SetupDisplay ()
- {
- struct NewWindow NewWindow;
- int i;
-
- /*
- * ===========
- * Screen Pens
- * ===========
- */
-
- WORD ScreenPens[13] =
- {
- 15, /* Unknown */
- 15, /* Unknown */
- 0, /* Windows titlebar text when inactive */
- 15, /* Windows bright edges */
- 0, /* Windows dark edges */
- 120, /* Windows titlebar when active */
- 0, /* Windows titlebar text when active */
- 4, /* Windows titlebar when inactive */
- 15, /* Unknown */
- 0, /* Menubar text */
- 15, /* Menubar */
- 0, /* Menubar base */
- -1
- };
-
- /*
- * =============
- * Create Screen
- * =============
- */
-
- if (CustomScreen)
- {
- ScreenType = CUSTOMSCREEN;
-
- ScreenWidth = ATARI_WIDTH - 64; /* ATARI_WIDTH + 8; */
- ScreenHeight = ATARI_HEIGHT; /* ATARI_HEIGHT + 13; */
-
- if (ChipSet == AGA_ChipSet)
- {
- ScreenDepth = 8;
- }
- else
- {
- ScreenDepth = 5;
- }
-
- NewScreen.LeftEdge = 0;
- NewScreen.TopEdge = 0;
- NewScreen.Width = ScreenWidth;
- NewScreen.Height = ScreenHeight;
- NewScreen.Depth = ScreenDepth;
- NewScreen.DetailPen = 1;
- NewScreen.BlockPen = 2; /* 2 */
- NewScreen.ViewModes = NULL;
- NewScreen.Type = CUSTOMSCREEN;
- NewScreen.Font = NULL;
- NewScreen.DefaultTitle = ATARI_TITLE;
- NewScreen.Gadgets = NULL;
- NewScreen.CustomBitMap = NULL;
-
- ScreenMain = (struct Screen *) OpenScreenTags
- (
- &NewScreen,
- SA_Left, 0,
- SA_Top, 0,
- SA_Width, ScreenWidth,
- SA_Height, ScreenHeight,
- SA_Depth, ScreenDepth,
- SA_DetailPen, 1,
- SA_BlockPen, 2, /* 2 */
- SA_Pens, ScreenPens,
- SA_Title, ATARI_TITLE,
- SA_Type, CUSTOMSCREEN,
- /*
- SA_Overscan, OSCAN_STANDARD,
- */
- /*
- SA_DisplayID, ScreenID,
- */
- SA_AutoScroll, TRUE,
- /*
- SA_Interleaved, TRUE,
- */
- TAG_DONE
- );
-
- if (ChipSet == AGA_ChipSet)
- {
- TotalColours = 256;
- }
- else
- {
- TotalColours = 16;
- }
-
- for (i=0;i<TotalColours;i++)
- {
- int rgb = colortable[i];
- int red;
- int green;
- int blue;
-
- red = (rgb & 0x00ff0000) >> 20;
- green = (rgb & 0x0000ff00) >> 12;
- blue = (rgb & 0x000000ff) >> 4;
-
- SetRGB4 (&ScreenMain->ViewPort, i, red, green, blue);
- }
-
- image_Button64.PlanePick = 9;
- image_Button64.PlaneOnOff = (UBYTE) 6;
- image_Button64Selected.PlanePick = 9;
- image_Button64Selected.PlaneOnOff = (UBYTE) 6;
- image_MutualGadget.PlanePick = 9;
- image_MutualGadget.PlaneOnOff = (UBYTE) 6;
- image_MutualGadgetSelected.PlanePick = 9;
- image_MutualGadgetSelected.PlaneOnOff = (UBYTE) 6;
- }
- else
- {
- ScreenType = WBENCHSCREEN;
-
- ScreenWidth = ATARI_WIDTH; /* ATARI_WIDTH + 8; */
- ScreenHeight = ATARI_HEIGHT; /* ATARI_HEIGHT + 13; */
- }
-
- /*
- * =============
- * Create Window
- * =============
- */
-
- NewWindow.DetailPen = 0;
- NewWindow.BlockPen = 148;
-
- if (CustomScreen)
- {
- NewWindow.LeftEdge = 0;
- NewWindow.TopEdge = 0;
- NewWindow.Width = ScreenWidth; /* ATARI_WIDTH + 8; */
- NewWindow.Height = ScreenHeight; /* ATARI_HEIGHT + 13; */
- NewWindow.IDCMPFlags = SELECTDOWN | SELECTUP | MOUSEBUTTONS | MOUSEMOVE | MENUPICK | MENUVERIFY | MOUSEBUTTONS | GADGETUP | RAWKEY | VANILLAKEY;
-
- /*
- * If you use the ClickToFront commodity it might be a good idea to
- * enable the BACKDROP option in the NewWindow.Flags line below.
- */
-
- NewWindow.Flags = /* BACKDROP | */ REPORTMOUSE | BORDERLESS | GIMMEZEROZERO | SMART_REFRESH | ACTIVATE;
- NewWindow.Title = NULL;
- }
- else
- {
- NewWindow.LeftEdge = 0;
- NewWindow.TopEdge = 11;
- NewWindow.Width = ScreenWidth + 8; /* ATARI_WIDTH + 8; */
- NewWindow.Height = ScreenHeight + 13; /* ATARI_HEIGHT + 13; */
- NewWindow.IDCMPFlags = SELECTDOWN | SELECTUP | MOUSEBUTTONS | MOUSEMOVE | CLOSEWINDOW | MENUPICK | MENUVERIFY | MOUSEBUTTONS | GADGETUP | RAWKEY | VANILLAKEY;
- NewWindow.Flags = REPORTMOUSE | WINDOWCLOSE | GIMMEZEROZERO | WINDOWDRAG | WINDOWDEPTH | SMART_REFRESH | ACTIVATE;
- NewWindow.Title = ATARI_TITLE;
- }
-
- NewWindow.FirstGadget = NULL;
- NewWindow.CheckMark = NULL;
- NewWindow.Screen = ScreenMain;
- NewWindow.Type = ScreenType;
- NewWindow.BitMap = NULL;
- NewWindow.MinWidth = 50;
- NewWindow.MinHeight = 11;
- NewWindow.MaxWidth = 1280;
- NewWindow.MaxHeight = 512;
-
- WindowMain = (struct Window*) OpenWindowTags
- (
- &NewWindow,
- WA_NewLookMenus, TRUE,
- WA_MenuHelp, TRUE,
- WA_ScreenTitle, ATARI_TITLE,
- /*
- WA_Zoom, Zoomdata,
- */
- TAG_DONE
- );
-
- if (!WindowMain)
- {
- printf ("Failed to create window\n");
- Atari_Exit (0);
- }
- }
-
-
-
- /*
- * =======
- * Iconify
- * =======
- */
-
- /*
- * Revision : v0.3.3
- * Introduced : 10th March 1996
- * Last updated : 10th March 1996
- */
-
- Iconify ()
- {
- ULONG Class;
- USHORT Code;
- APTR Address;
-
- struct IntuiMessage *IntuiMessage;
-
- struct NewWindow NewWindow;
-
- int QuitRoutine;
-
- ClearMenuStrip (WindowMain);
-
- if (WindowMain)
- {
- CloseWindow (WindowMain);
- }
-
- if (ScreenMain)
- {
- CloseScreen (ScreenMain);
- }
-
- NewWindow.LeftEdge = 0;
- NewWindow.TopEdge = 11;
- NewWindow.Width = 112;
- NewWindow.Height = 21;
- NewWindow.DetailPen = 0;
- NewWindow.BlockPen = 15;
- NewWindow.IDCMPFlags = CLOSEWINDOW;
- NewWindow.Flags = WINDOWCLOSE | WINDOWDRAG | ACTIVATE;
- NewWindow.FirstGadget = NULL;
- NewWindow.CheckMark = NULL;
- NewWindow.Title = "Atari800e";
- NewWindow.Screen = NULL;
- NewWindow.Type = WBENCHSCREEN;
- NewWindow.BitMap = NULL;
- NewWindow.MinWidth = 92;
- NewWindow.MinHeight = 21;
- NewWindow.MaxWidth = 1280;
- NewWindow.MaxHeight = 512;
-
- WindowIconified = (struct Window*) OpenWindowTags
- (
- &NewWindow,
- WA_NewLookMenus, TRUE,
- WA_MenuHelp, TRUE,
- WA_ScreenTitle, ATARI_TITLE,
- TAG_DONE
- );
-
- QuitRoutine = FALSE;
-
- while (QuitRoutine == FALSE)
- {
- while (IntuiMessage = (struct IntuiMessage*) GetMsg (WindowIconified->UserPort))
- {
- Class = IntuiMessage->Class;
- Code = IntuiMessage->Code;
- Address = IntuiMessage->IAddress;
-
- ReplyMsg (IntuiMessage);
-
- switch (Class)
- {
- case CLOSEWINDOW :
- QuitRoutine = TRUE;
- break;
- default :
- break;
- }
- }
- }
-
- CloseWindow (WindowIconified);
-
- SetupDisplay ();
-
- SetMenuStrip (WindowMain, menu_Project);
- }
-
- void Atari_Set_LED(int on)
- {
- }
-
- UBYTE Atari_Keyboard_State(void)
- {
- return ~((SHIFTPRESSED<<3) | (KEYPRESSED<<2));
- }
-